【发布时间】:2013-01-27 15:00:46
【问题描述】:
使用 Python 3.3.0,我从 csv 文件(标题:ID;Col1;Col2;Col3;Col4;Col5)创建了一个“字典”:
ID;Col1;Col2;Col3;Col4;Col5
15345;1;1;nnngngn;vhrhtnz;latest
12345;12;8;gnrghrtthr;tznhltrnhklr;latest
90834;3;4;something;nonsens;latest
12345;34;235;dontcare;muhaha;oldone
有代码
file = "test.csv"
csv_file = csv.DictReader(open(file, 'r'), delimiter=';', quotechar='"')
我想将 ID = 12345 的行复制到新字典中,而不是复制到文件中。 我真的需要复制到字典中,而不是列表中,因为我希望能够直接处理列名。 我尝试这样做
cewl = {}
for row in csv_file:
if row['ID'] == '12345':
cewl.update(row)
print(cewl)
输出是:
{'ID': '12345', 'Col1': '34', 'Col2': '235', 'Col3': 'dontcare', 'Col4': 'muhaha', 'Col5': 'oldone'}
我的问题: 只复制了 ID=12345 的第二行,第一行省略了,不知道为什么。
如果我通过复制到新列表中来尝试此操作(仅用于测试目的),一切正常:
cewl = []
for row in csv_file1:
if row['ID'] == '12345':
cewl.append(row)
print(cewl)
输出是:
[{'Col3': 'gnrghrtthr', 'Col2': '8', 'Col1': '12', 'Col5': 'latest', 'Col4': 'tznhltrnhklr', 'ID': '12345'},
{'Col3': 'dontcare', 'Col2': '235', 'Col1': '34', 'Col5': 'oldone', 'Col4': 'muhaha', 'ID': '12345'}]
我不知道为什么通过复制到新字典中这不起作用...似乎没有像 .add 或 .append 这样的方法用于 dictreader。
如何将我的数据复制到新字典中而不丢失任何行?
【问题讨论】:
-
字典是一个映射;决定是否要将 ID ('12345') 映射到示例中的两个或多个不同的数据,在这种情况下,您可以将 ID 映射到包含键
Col1、@ 的不同值映射的字典列表987654329@ 等或类似元组列表(ID, Col1, Col2, etc)。在编写任何代码之前考虑您的数据结构。
标签: python dictionary python-3.x copy