我有一个包含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'])
但是,当然,这种感觉不如某种列表理解技术那么优雅。
答案 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]}