繁体   English   中英

字典列表到列表字典

[英]list of dictionaries to dictionary of lists

我在将字典列表转换为列表字典时遇到麻烦。 任何指导和帮助表示赞赏。 我的CSVreader是词典列表。 打印时,它给出了巨大的词典列表,我希望它是列表的字典。 这是我正在谈论的CSVreader。

CSVreader = csv.DictReader(open( 'N:/Individual Files/Jerry/2013 customer list qc, cr, db, gb 9-19-2013_JerrysMessingWithVersion.csv', "rb"),dialect='excel', delimiter=',')

for row in CSVreader:
        print row 

假设您的CSVreader的行为类似于字典列表:

from collections import defaultdict
result = defaultdict(list)
for d in CSVreader:
    for k, v in d.items():
        result[k].append(v)

在对您的问题的评论中,您注意到输入数据是:

{'cust_no':126,'lastname':'smith','firstname':'john','cust_no:127','lastname':'s‌​moth','firstname','bob'}

请注意,这不是词典列表。 这是:

[{ 'cust_no':126, 'lastname': 'smith', 'firstname':'john'}, {'cust_no':127, 'lastname':'smoth', 'firstname':'bob'}]

通过更正的输入,您可以使用defaultdict获得所需的内容。

>>> input_data = [{ 'cust_no':126, 'lastname': 'smith', 'firstname':'john'}, {'cust_no':127, 'lastname':'smoth', 'firstname':'bob'}]
>>> from collections import defaultdict
>>> output_data = defaultdict(list)
>>> for a_dict in input_data:
...     for k, v in a_dict.items():
...             output_data[k].append(v)
...
>>> output_data
defaultdict(<type 'list'>, {'lastname': ['smith', 'smoth'], 'cust_no': [126, 127], 'firstname': ['john', 'bob']})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM