在Python中按键高效选择字典项
假设我有一个字典,它的键是字符串。我该如何高效地从中创建一个新字典,只包含某个列表中的键呢?
比如说:
# 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)