在Python中按键高效选择字典项

6 投票
1 回答
5698 浏览
提问于 2025-04-15 23:46

假设我有一个字典,它的键是字符串。我该如何高效地从中创建一个新字典,只包含某个列表中的键呢?

比如说:

# a dictionary mapping strings to stuff
mydict = {'quux': ...,
          'bar': ...,
          'foo': ...}

# list of keys to be selected from mydict
keys_to_select = ['foo', 'bar', ...]

我想到的方法是:

filtered_mydict = [mydict[k] for k in mydict.keys() \ 
                   if k in keys_to_select]

但是我觉得这个方法效率很低,因为:(1)它需要用keys()来列出所有的键,(2)每次都要在keys_to_select中查找k。我觉得至少可以避免其中一个。有没有什么好的主意?如果需要的话,我也可以使用scipy/numpy。

1 个回答

15
dict((k, mydict[k]) for k in keys_to_select)

如果你知道要选择的所有键也都是mydict里的键;如果不是这样的话,

dict((k, mydict[k]) for k in keys_to_select if k in mydict)

撰写回答