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

6
задан 9 June 2010 в 22:03
поделиться

1 ответ

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)
15
ответ дан 8 December 2019 в 15:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: