gpt4 book ai didi

带有重复键的python3 csv + python defaultdict

转载 作者:行者123 更新时间:2023-11-28 22:38:08 26 4
gpt4 key购买 nike

我有一个 csv 文件,其中有很多序列号和 Material 编号,例如:如下所示(我只需要前 2 列,即序列号和底盘,其余的不需要)。

serial          chassis      type   date
ZX34215 Test XX YY
ZX34215 final-001 XX YY
AB30000 Used XX YY
ZX34215 final-002 XX YY

我在下面的代码片段中将所有序列号和 Material 号放入字典中,但这里重复的键被消除了,它捕获了最新的序列号。

工作代码

import sys
import csv
with open('file1.csv', mode='r') as infile:
reader = csv.reader(infile)
mydict1 = {rows[0]:rows[1] for rows in reader}
print(mydict1)

我也需要捕获具有相应值的重复键,但它失败了。我使用了 python defaultdict,看起来我在这里遗漏了一些东西。

不工作

from collections import defaultdict
with open('file1.csv',mode='r') as infile:
data=defaultdict(dict)
reader=csv.reader(infile)
list_res = list(reader)
for row in reader:
result=data[row[0]].append(row[1])
print(result)

有人可以纠正我将重复键捕获到字典中吗。

最佳答案

您需要将列表传递给您的 defaultdict 而不是 dict :

data=defaultdict(list)

此外,您不需要将 reader 对象转换为列表,为了对其进行迭代,您也不应在每次迭代中将附加片段分配给变量:

data=defaultdict(list)
with open('file1.csv') as infile:
reader=csv.reader(infile)
for row in reader:
try:
data[row[0]].append(row[1])
except IndexError:
pass
print(data)

关于带有重复键的python3 csv + python defaultdict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35914579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com