python - 如何通过键将一个字典列表拆分为两个字典列表
问题描述
我有下一个字典:
# lists of dicts 0 (dict0)
[
{'hour': '2:00', 'key1': 1, 'key2': 501},
{'hour': '3:00', 'key1': 2, 'key2': 502},
{'hour': '4:00', 'key1': 3, 'key2': 503},
{'hour': '5:00', 'key1': 4, 'key2': 504},
]
如何(以 Python 方式)将此列表拆分为两个分别包含 {hour,key1} 和 {hour,key2} 的字典列表。
# list of dicts 1 (dict1)
[
{'hour': '2:00', 'key1': 1},
{'hour': '3:00', 'key1': 2},
{'hour': '4:00', 'key1': 3},
{'hour': '5:00', 'key1': 4},
]
# list of dicts 2 (dict2)
[
{'hour': '2:00', 'key2': 501},
{'hour': '3:00', 'key2': 502},
{'hour': '4:00', 'key2': 503},
{'hour': '5:00', 'key2': 504},
]
这是我到目前为止尝试过的,但它猜测还有另一种没有循环的方法:
dict1 = []
for row in dict0:
dictionary = {'hour': row['hour'], 'key1': row['key1']}
dict1.append(dictionary)
dict2 = []
for row in dict0:
dictionary = {'hour': row['hour']),'key2': row['key2']}
dict2.append(dictionary)
解决方案
一对列表推导可以处理这个
>>> [{'hour': d['hour'], 'key1': d['key1']} for d in data]
[{'hour': '2:00', 'key1': 1},
{'hour': '3:00', 'key1': 2},
{'hour': '4:00', 'key1': 3},
{'hour': '5:00', 'key1': 4}]
>>> [{'hour': d['hour'], 'key2': d['key2']} for d in data]
[{'hour': '2:00', 'key2': 501},
{'hour': '3:00', 'key2': 502},
{'hour': '4:00', 'key2': 503},
{'hour': '5:00', 'key2': 504}]
虽然显然这两个仍然包含循环
推荐阅读
- java - 如何展平Java中的字典数组?
- angular - Angular 7无法绑定到
因为它不是一个已知的属性 (来自导入的模块) - java - Maven failsafe:集成测试无法识别单个集成测试
- excel - VBA:如果工作簿中的工作表名称等于从用户窗体中选择的组合框值,则复制该工作表并将其粘贴到另一个工作簿中
- python-3.x - 仅在枚举列表 Python3 中显示整数
- angular - 角度测试动态标签组件
- javascript - 使用 Javascript 将 DynamodB 日期格式字符串转换为日期格式
- javascript - 如何使用'es6'样式在打字稿中动态设置类型?
- python - Anaconda 2019.10-py37 中具有 scipy.linalg.eigvalsh 的大型矩阵的“MKL 错误:参数 12...”(更新)
- python - 如何解决 cx_Oracle 连接不工作:ORA-03113