如何迭代dict中的特定键来获取值

AP7*_*P70 1 python

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

例如,我想从下面列表中的所有dicts中获取键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}]
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

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

keys = ('c', 'd', 'e')
[{k: d[k] for k in keys} for d in List]
Run Code Online (Sandbox Code Playgroud)

如果这些键可能丢失,您可以使用字典视图对象(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]
Run Code Online (Sandbox Code Playgroud)

演示:

>>> 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}]
Run Code Online (Sandbox Code Playgroud)