Эффективный выбор словарных элементов по ключам в Python - PullRequest
6 голосов
/ 10 июня 2010

предположим, у меня есть словарь, ключи которого являются строками. Как я могу эффективно создать новый словарь из того, который содержит только ключи, присутствующие в каком-то списке?

например:

# 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, если нужно.

1 Ответ

15 голосов
/ 10 июня 2010
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...