在Python中有效地按键选择字典项

时间:2010-06-09 22:03:49

标签: python numpy scipy

假设我有一个字典,其键是字符串。如何从仅包含某些列表中存在的键的字典中有效地创建新字典?

例如:

# 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 个答案:

答案 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)