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

Python 如何迭代dict中的特定键以获取值,python,Python,我有一个很大的目录,里面有许多字典。在每个字典中,我想迭代3个特定的键,然后转储到一个新的列表中。每个dict的键都是相同的 例如,我想从下面列表中的所有dict中获取键c、d、e,输出到列表2 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,

我有一个很大的目录,里面有许多字典。在每个字典中,我想迭代3个特定的键,然后转储到一个新的列表中。每个dict的键都是相同的

例如,我想从下面列表中的所有dict中获取键c、d、e,输出到列表2

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}]

您可以使用嵌套的dict理解:

keys = ('c', 'd', 'e')
[{k: d[k] for k in keys} for d in List]
如果这些键可能丢失,您可以使用(在Python 2中,在Python 3中)查找交叉点,以仅包含实际存在的键:

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


您可以使用嵌套的dict理解:

keys = ('c', 'd', 'e')
[{k: d[k] for k in keys} for d in List]
如果这些键可能丢失,您可以使用(在Python 2中,在Python 3中)查找交叉点,以仅包含实际存在的键:

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

请尝试以下代码:

keys = ['c', 'd']  
for dictionary in List1:
        d = {}
        for key in dictionary:
            if key in keys:
                d[key] = dictionary[key]
        List2.append(d)
请尝试以下代码:

keys = ['c', 'd']  
for dictionary in List1:
        d = {}
        for key in dictionary:
            if key in keys:
                d[key] = dictionary[key]
        List2.append(d)

为什么在这里循环使用较大数量的字典键,而不是较小的
序列?此外,测试字典中的某个键的成本是O(1)恒定成本,而测试列表的成本是O(N),因此,通过在此处循环字典,您选择了性能最差的选项。为什么在此处循环较大数量的字典键,而不是较小的
序列?此外,在字典中测试一个键的成本是O(1)恒定成本,而在列表中测试的成本是O(N),因此您可以在这里通过循环字典来选择性能最差的选项。使用
pandas
DataFrame这样的东西似乎很方便,每个dict键都是列名,和值行。似乎使用
pandas
DataFrame
会很方便,每个dict键都是列名和值行。感谢Martijn的快速响应,工作非常顺利。我也试过拉斐尔的答案,但没有成功。我还不懂嵌套式听写理解,它真的很有效。。。我是Python新手。感谢Martijn的快速响应,工作非常出色。我也试过拉斐尔的答案,但没有成功。我还不懂嵌套式听写理解,它真的很有效。。。我是Python新手。