предположите, что у меня есть словарь, ключи которого являются строками. Как я могу эффективно сделать новый словарь из того, что содержит только ключи, существующие в некотором списке?
например:
# 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) это требует перечисления ключей с ключами (), (2) это требует поиска k в keys_to_select каждый раз. по крайней мере одного из них можно избежать, я думал бы. какие-либо идеи? Я могу использовать scipy/numpy слишком в случае необходимости.
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)