Если х это значение в этом слове ... Python - PullRequest
3 голосов
/ 11 ноября 2011

Я хочу сделать это:

d = {1:2, 3:4}
if 4 in d:
    print 'Aha!'

но я хочу читать из значений, а не ключей. Как Pythonic способ сделать это?

Ответы [ 2 ]

6 голосов
/ 11 ноября 2011

Использовать itervalues:

d = {1:2, 3:4}
if 4 in d.itervalues():
    print 'Aha!'

Обратите внимание, что это будет намного медленнее, чем поиск ключа, потому что это потенциально потребует проверки всех значений в словаре.Если вам нужно часто выполнять эту операцию, вы можете рассмотреть возможность сохранения значений в set.

3 голосов
/ 11 ноября 2011

Природа словаря заключается в том, что вы не можете эффективно проверить, присутствует ли значение, так же, как вы можете проверить, присутствует ли ключ.

Вам нужно перебирать словарь, проверяя каждое значение, хотя это можно сделать прозрачным образом, используя код, предложенный Марком. Если у вас большие словари, то производительность может быть проблемой, и вам может потребоваться другая структура данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...