Как проверить, существует ли значение в словаре (python) - PullRequest
208 голосов
/ 21 ноября 2011

У меня есть следующий словарь в Python:

d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}

Мне нужен способ узнать, существует ли в этом словаре значение типа "один" или "два".

Например, если бы я хотел узнать, существует ли индекс "1", мне просто нужно было бы набрать:

"1" in d

И тогда python скажет мне, является ли это истиной или ложью, однако мне нужно сделать ту же самую вещь, кроме как, чтобы найти, существует ли значение.

Ответы [ 5 ]

323 голосов
/ 21 ноября 2011
>>> d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
>>> 'one' in d.values()
True

Из любопытства, некоторые сравнительные сроки:

>>> T(lambda : 'one' in d.itervalues()).repeat()
[0.28107285499572754, 0.29107213020324707, 0.27941107749938965]
>>> T(lambda : 'one' in d.values()).repeat()
[0.38303399085998535, 0.37257885932922363, 0.37096405029296875]
>>> T(lambda : 'one' in d.viewvalues()).repeat()
[0.32004380226135254, 0.31716084480285645, 0.3171098232269287]

РЕДАКТИРОВАТЬ: И в случае, если вам интересно, почему ... причина в том, что каждый из перечисленных выше возвращает различные типы объектов, которые могут или не могут быть хорошо подходят для операций поиска:

>>> type(d.viewvalues())
<type 'dict_values'>
>>> type(d.values())
<type 'list'>
>>> type(d.itervalues())
<type 'dictionary-valueiterator'>

РЕДАКТИРОВАТЬ2: В соответствии с запросом в комментариях ...

>>> T(lambda : 'four' in d.itervalues()).repeat()
[0.41178202629089355, 0.3959040641784668, 0.3970959186553955]
>>> T(lambda : 'four' in d.values()).repeat()
[0.4631338119506836, 0.43541407585144043, 0.4359898567199707]
>>> T(lambda : 'four' in d.viewvalues()).repeat()
[0.43414998054504395, 0.4213531017303467, 0.41684913635253906]
26 голосов
/ 21 ноября 2011

Вы можете использовать

"one" in d.itervalues()

, чтобы проверить, находится ли "one" среди значений вашего словаря.

22 голосов
/ 22 ноября 2016

Словарь Python имеет get (ключ) funcion

>>> d.get(key)

Например,

>>> d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
>>> d.get('3')
'three'
>>> d.get('10')
none

Если ваш ключ не существует, вернет none значение.

foo = d[key] # raise error if key doesn't exist
foo = d.get(key) # return none if key doesn't exist

Содержимое, относящееся к версиям ниже 3.0 и выше 5.0..

9 голосов
/ 21 ноября 2011

Использование просмотров словаря:

if x in d.viewvalues():
    dosomething()..
1 голос
/ 19 апреля 2018

В Python 3 вы можете использовать функцию values() словаря. Возвращает объект просмотра значений. Это, в свою очередь, может быть передано функции iter, которая возвращает объект итератора. Итератор можно проверить с помощью in, например,

'one' in iter(d.values())

Или вы можете использовать объект просмотра напрямую, так как он похож на список

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