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

2024-03-28 12:54:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含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]

然而,这样做两次将是低效的。有没有一个有效的,优雅的或Python的方式做这件事?我的另一个解决方案是:

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

但是,当然,这感觉没有某种列表理解技巧那么优雅。你知道吗


Tags: in列表for字典方式解决方案itemdict
1条回答
网友
1楼 · 发布于 2024-03-28 12:54:21

我建议创建一个单独的字典,其键类似于原始字典,值为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]}

相关问题 更多 >