我有一个CSV文件,我正在该文件中将某些字段(列)读入字典(以便一列作为键和其他作为值)。更确切地说,我有数字格式的键和字符串格式的值。但我在这里有一个问题。在CSV文件中,我有相同数字与多个字符串关联的情况。所以当我试图将我的字典打印到output.csv文件时,它确实按照我所希望的(key:value)格式打印它,但是它忽略了密钥具有多个与其关联的值的情况。从我观察到的情况来看,只有与该关键字相关的最新值才被保留,旧值被覆盖。当某些键具有多个值时,将字典打印到CSV文件
例如: 999测试1 999测试1 999的Test2 999 Test3的
在这种情况下,只有999:Test3的被打印在output.csv文件。我需要的是如果出现这种情况,它应该在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()
任何帮助表示赞赏。
谢谢!
你是说在输入文件,因为你读的列18和19,也可以是具有行第18列中的值与前一行相同? – mauve
python中的字典有唯一的键,所以你不能将Test分配给一个键。但是,您可以将一个列表分配给一个键。所以你可以做999 [Test1,Test1,Test2,Test3]。 – aph107
@mauve:是的,你说得对。我想识别这些行并相应地打印错误消息。 –