Как проверить, существует ли значение в словаре (python)

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

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

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

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

"1" in d

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

Ответ 1

>>> 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'>

EDIT2: В соответствии с запросом в комментариях...

>>> 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]

Ответ 2

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

"one" in d.itervalues()

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

Ответ 3

Используйте словарные представления:

if x in d.viewvalues():
    dosomething()..

Ответ 4

Словарь Python имеет get (key) 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. .