首页 > 解决方案 > 如何通过键将一个字典列表拆分为两个字典列表

问题描述

我有下一个字典:

# 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)

标签: pythonlistdictionary

解决方案


一对列表推导可以处理这个

>>> [{'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}]

虽然显然这两个仍然包含循环


推荐阅读