假设我有一个字典,其键是字符串。如何从仅包含某些列表中存在的键的字典中有效地创建新字典?
例如:
# 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。
答案 0 :(得分: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)