从python中的字典列表构造两个列表

时间:2015-10-16 01:46:35

标签: python list dictionary list-comprehension

我有一个包含2个或更多键的字典列表,我想基于这些键构建2个或更多列表。例如:

dict_list = [{'key1':1, 'key2':2}, {'key1': 3, 'key2':4}, ... ]

应该成为

list1 = [1, 3, ...]
list2 = [2, 4, ...]

要构建单个列表,有一个优雅的解决方案:

list1 = [item['key1'] for item in dict_list]

但是,这样做两次效率不高。这样做有效,优雅或Pythonic吗?我的另一个解决方案是:

list1 = []
list2 = []
for item in dict_list:
    list1.append(item['key1'])
    list2.append(item['key2'])

但是,当然,这种感觉不如某种列表理解技术那么优雅。

1 个答案:

答案 0 :(得分:1)

我建议使用包含原始词典的键和包含每个原始词典的list的值来制作单个字典。适当的值:

>>> dict_list = [{'key1':1, 'key2':2}, {'key1': 3, 'key2':4}]
>>> dct = {}
>>> for d in dict_list:
...     for k in d:
...         dct.setdefault(k, []).append(d[k])
...
>>> dct
{'key1': [1, 3], 'key2': [2, 4]}