Skip to main content
 首页 » 编程设计

Python 从字典列表中为每个具有特定键的字典创建列表

2025年05月04日23落叶无声

<分区>

我有一个不一定具有相同键的字典列表。我正在尝试为每个具有特定键的字典中包含的值创建一个新列表。

例如

dict1 = {'key1': 1, 'key2': 2, 'key4': 4} 
dict2 = {'key2': 2, 'key3': 3} 
dict3 = {'key1': 1, 'key2': 2, 'key3': 3} 
 
dict_list = [dict1, dict2, dict3] 

现在我正尝试从 dict_list 创建一个列表,如下所示:

key2vals = [dict['key2'] for dict in dict_list] 
print(key2vals) 
   [2, 2, 2] 

效果很好,因为“key2”包含在列表中的每个字典中。然而,当我尝试一个没有出现在每本字典中的键时,我得到了一个错误。例如。 'key1':

>>> key1vals = [dict['key1'] for dict in dict_list] 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
  File "<stdin>", line 1, in <listcomp> 
KeyError: 'key1' 

是否有一种简短而直接的方法可以让我执行以下操作,但它不起作用?

# This does not work 
key1vals = [dict['key1'] if 'key1' in dict for dict in dict_list] 

什么是最符合 Pythonic 的方法来完成这个?

回答: for 和 if 语句的顺序应该颠倒过来:

key1vals = [dict['key1'] for dict in dict_list if 'key1' in dict ] 

此外,根据 AbrahamB 和 DJV 的建议,我能够在没有搜索键的情况下为那些字典添加默认值:

[dict.get('key1', 0) for dict in dict_list]