我有一个csv文件,它有很多序列号和材料编号,例如下面所示(我只需要前两列,即串口和底盘,不需要休息)。
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)
我有以下代码片段,它将所有序列号和材料号都放入字典中,但这里删除了重复键,它会捕获最新的序列号。
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)
我需要捕获具有相应值的重复键,但它失败了。我使用了python defaultdict,看起来我错过了一些东西。
@RequestMapping("/**")
@ResponseBody
public DeferredResult<ResponseEntity<String>> execute() {
DeferredResult<ResponseEntity<String>> result = new DeferredResult<>();
execute(deferredResult);
return result;
}
有人可以纠正我将重复的密钥捕获到字典中。
答案 0 :(得分:4)
您需要将列表传递给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)