首页 > 解决方案 > python 元组列表到字典

问题描述

我有一个看起来像这样的数据格式:

例如,

[('2011', 1, 'value1', '68843'), 
 ('2011', 1, 'value2', '37029'),
 ('2014', 1, 'value1', '66061'),
 ('2014', 1, 'value2', '96994'),
 ('2016', 1, 'value1', '68286'),
 ('2016', 1, 'value2', '84507'), 
 ('2011', 1, 'value3', '58882')]

我想使用python将此数据转换为以下格式

[{"year":2011,"value1":68843,"value2":37029,"value3":58882}, 
 {"year":2014,"value1":66061,"value2":96994}, 
 {"year":2016,"value1":68286,"value2":84507}]

实现此目的的语法上最干净的方法是什么?

标签: pythonlistdictionary

解决方案


import collections

values = [
 ('2011', 1, 'value1', '68843'), 
 ('2011', 1, 'value2', '37029'),
 ('2014', 1, 'value1', '66061'),
 ('2014', 1, 'value2', '96994'),
 ('2016', 1, 'value1', '68286'),
 ('2016', 1, 'value2', '84507'), 
 ('2011', 1, 'value3', '58882')
]

d = collections.defaultdict(dict)

for year, _, name, value in values:
    d[year][name] = value

result = [{'year': year, **values} for year, values in d.items()]
print(result)

推荐阅读