我有一张格式为
的CSV其中A,B& C是标题。
如何将此CSV热转换为以下格式的字典
{'A': '1', 'B': '4','C': '7'},
{'A': '2', 'B': '5','C': '8'},
{'A': '3', 'B': '6','C': '9'}
到目前为止,我尝试使用以下代码:
import csv
reader = csv.DictReader(open('file.csv'))
result = {}
for row in reader:
for column, value in row.items():
result.setdefault(column, []).append(value)
这不是给我预期的输出。有什么建议吗?
答案 0 :(得分:4)
您不需要额外的代码。 csv
已经为你做了繁重的工作。只需按原样使用csv.DictReader
:
import csv
with open('e.txt') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
以上输出:
OrderedDict([('A', '1'), (' B', ' 4'), (' C', ' 7')])
OrderedDict([('A', '2'), (' B', ' 5'), (' C', ' 8')])
OrderedDict([('A', '3'), (' B', ' 6'), (' C', ' 9')])
您可能认为自己需要dict
而不是OrderedDict
,但我相信您不会。{使用OrderedDict
对象可确保您的行保持正确排序。
谢谢你的回复。这似乎有效,但对于我的任务,我需要以问题中提到的格式。有没有办法把它变成那种格式?
为什么到底?不要被格式所迷惑。 OrderedDict
的行为与完全 的行为相同。唯一的区别是OrderedDict
将维持其顺序。如果您只需要以特定格式打印行,则可以将每行转换为dict
并使用__repr__
:
for row in reader:
print(dict(row))