使用python从CSV创建字典

Tha*_*Guy 1 python csv dictionary

我有一个 CSV 格式

在此处输入图片说明

其中 A、B 和 C 是标题。

我如何pythonically将此CSV转换为以下形式的字典

{'A': '1', 'B': '4','C': '7'},
{'A': '2', 'B': '5','C': '8'},
{'A': '3', 'B': '6','C': '9'}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我正在尝试以下代码:

import csv
reader = csv.DictReader(open('file.csv'))

result = {}
for row in reader:
    for column, value in row.items():
        result.setdefault(column, []).append(value)
Run Code Online (Sandbox Code Playgroud)

这没有给我预期的输出。有什么建议?

Chr*_*ean 8

您拥有的额外代码是不必要的。csv已经为你做了繁重的工作。只需csv.DictReader按原样使用:

import csv

with open('e.txt') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row)
Run Code Online (Sandbox Code Playgroud)

以上输出:

OrderedDict([('A', '1'), (' B', ' 4'), (' C', ' 7')])
OrderedDict([('A', '2'), (' B', ' 5'), (' C', ' 8')])
OrderedDict([('A', '3'), (' B', ' 6'), (' C', ' 9')])    
Run Code Online (Sandbox Code Playgroud)

您可能认为您想要 adict而不是OrderedDict,但我很确定您不需要。使用OrderedDict对象将确保您的行保持正确排序。

谢谢您的回复。这似乎有效,但对于我的任务,我需要以问题中提到的格式使用它。有没有办法把它变成那种格式?

为什么?不要被格式所迷惑。OrderedDict 行为与正常字典完全相同。唯一的区别是OrderedDict将维持其秩序。如果您只需要以某种格式打印行,则可以将每一行转换为 adict并使用它的__repr__

for row in reader:
    print(dict(row))
Run Code Online (Sandbox Code Playgroud)