Как тестировать / искать значения в словарях

#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. NM

2. Да, теперь понял. Извините 🙂 (Нужно больше кофе)

Ответ №2:

Читайте документы дальше dict . key in d Оператор в словаре ищет ключ в dict ключах, а не его значения.

Чтобы посмотреть значения, используйте value in d.values() .

Кроме того, это менее эффективная операция O (размер dict). Если вы постоянно ищете значения, вам обычно следует использовать другую структуру данных (возможно, отсортированный список в зависимости от конкретного варианта использования).