我有一个CSV文件,我从中读取一些字段(列)到字典中(这样一列用作键,另一列用作值)。更确切地说,我有数字格式的键和字符串格式的值。但我这里有一个问题。在CSV文件中,我有一些情况,其中相同的数字与多个字符串相关联。因此,当我尝试将我的字典打印到output.csv文件时,它确实按照我想要的(键:值)格式打印它,但它忽略了键具有多个与之关联的值的情况。根据我的观察,只保留与该键关联的最新值,并覆盖旧值。
例如: 999测试1 999测试1 999测试2 999 Test3
在这种情况下只有999:在output.csv文件上打印Test3。我需要的是,如果出现这样的情况,它应该在output.csv文件上打印一条消息,就像这样。
999:有多个测试
我该如何实现?这是我到目前为止编写的代码,打印出字典输出文件。但我需要一些帮助来结合上述预期结果。
import csv
infile = open('input.csv',"rb")
reader = csv.reader(infile)
outfile = open('output.csv',"wb")
writer = csv.writer(outfile)
mydict = dict((rows[18],rows[19]) for rows in reader)
for key,value in mydict.items():
writer.writerow([key,value])
infile.close()
outfile.close()
感谢任何帮助。
谢谢!
答案 0 :(得分:0)
只需在已找到的密钥上保留一个标签并对其进行测试:
import csv
infile = open('input.csv', "rb")
reader = csv.reader(infile)
outfile = open('output.csv', "wb")
writer = csv.writer(outfile)
found_keys = {}
for rows in reader:
k, v = rows[18], rows[19]
if k in found_keys and found_keys[k] != v:
print("found duplicate key {} with different values {} , {}".format(k, v, found_keys[k]))
else:
found_keys[k] = v
writer.writerow([k, v])
infile.close()
outfile.close()