#python #dictionary
#python #словарь
Вопрос:
Я пытаюсь проверить, присутствует ли определенное значение в словаре. Кажется, что с ключами работает простое if 'x' in 'dictionary'
утверждение, но не для значений.
dictionary = {
'First': '1',
'Second': '2',
'Third': '3'
}
if 'First' in dictionary:
print('First is here')
if '1' in dictionary:
print('1 is here')
Итак, очевидная логическая ошибка заключается в том, что вывод только считывает:
First is here
Любые советы будут высоко оценены, спасибо.
Ответ №1:
Если вы хотите получить доступ к значениям словаря, вам нужно вызвать dict.values
:
if '1' in dictionary.values():
Однако нет необходимости вызывать dict.keys
:
if 'First' in dictionary.keys():
потому in
что оператор перебирает словарь, который выдает его ключи.
Комментарии:
1. Хотя для ключей вы должны быть в состоянии просто сделать
if 'First' in diction
. О, извините, я вижу, что это было то, что сделал OP. NM2. Да, теперь понял. Извините 🙂 (Нужно больше кофе)
Ответ №2:
Читайте документы дальше dict
. key in d
Оператор в словаре ищет ключ в dict
ключах, а не его значения.
Чтобы посмотреть значения, используйте value in d.values()
.
Кроме того, это менее эффективная операция O (размер dict). Если вы постоянно ищете значения, вам обычно следует использовать другую структуру данных (возможно, отсортированный список в зависимости от конкретного варианта использования).