Skip to main content
 首页 » 编程设计

python之如何迭代字典中的特定键以获取值

2025年05月04日15shanyou

我有一个包含许多词典的大列表。在每个字典中,我想遍历 3 个特定的键,然后转储到一个新列表中。每个字典的键都是相同的。

例如,我想从下面List中的所有dict中抓取键c、d、e,输出到List2。

List = [{'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6...}, 
        {'a':10, 'b':20, 'c':30, 'd':40, 'e':50, 'f':60...}, 
        {'a':100, 'b':200, 'c':300, 'd':400, 'e':500, 'f':600...},] 
 
List2 = [{'c':3, 'd':4, 'e':5}, 
         {'c':30, 'd':40, 'e':50}, 
         {'c':300, 'd':400, 'e':500}] 

请您参考如下方法:

您可以使用嵌套的字典理解:

keys = ('c', 'd', 'e') 
[{k: d[k] for k in keys} for d in List] 

如果这些 key 可能丢失,您可以使用dictionary view object (dict.viewkeys() 在 Python 2 中,dict.keys() 在 Python 3 中)找到一个交集以仅包含实际存在的键:

keys = {'c', 'd', 'e'} 
[{k: d[k] for k in d.viewkeys() & keys} for d in List] 

演示:

>>> List = [{'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}, 
...         {'a':10, 'b':20, 'c':30, 'd':40, 'e':50, 'f':60}, 
...         {'a':100, 'b':200, 'c':300, 'd':400, 'e':500, 'f':600}] 
>>> keys = ('c', 'd', 'e') 
>>> [{k: d[k] for k in keys} for d in List] 
[{'c': 3, 'e': 5, 'd': 4}, {'c': 30, 'e': 50, 'd': 40}, {'c': 300, 'e': 500, 'd': 400}] 
>>> List = [{'a':1, 'b':2, 'd':4, 'e':5, 'f':6}, 
...         {'a':10, 'b':20, 'c':30, 'd':40, 'f':60}, 
...         {'a':100, 'b':200, 'e':500, 'f':600}] 
>>> keys = {'c', 'd', 'e'} 
>>> [{k: d[k] for k in d.viewkeys() & keys} for d in List] 
[{'e': 5, 'd': 4}, {'c': 30, 'd': 40}, {'e': 500}]