python - 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}]
实现此目的的语法上最干净的方法是什么?
解决方案
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)
推荐阅读
- node.js - 装饰器必须在属性声明的名称和所有关键字之前
- visual-studio-code - 如何在 vscode vim 中将 imap \|--> 映射到⟼
- html - 以绝对位置响应式定位视频
- python - 语音识别python错误请求
- python - 如何编写代码以通过关键字在 MongoDB 中查找项目?
- jquery - JQuery/Ajax/Class: removeClass() 然后 addClass() 在 ajax 函数中没有按预期工作
- python - Python - 上一个列表中相邻数字的乘积,直到只剩下一个数字
- c# - 使用 Entity Framework Core 5.0.8 级联组合框以填充 datagridview
- javascript - 电子表格应用程序无法使用 DriveApp 返回的 ID 打开ById
- python - 如何使用循环从 API 中抓取数据