Python – Удобный способ проверить значение в списке, который является частью словаря?

Я, по общему признанию, не проделал огромного объема исследований по этой теме, но я пытаюсь что-то сделать быстро. У меня есть словарь с целыми числами как ключи и списки как значения. Раньше я проверял список, содержащийся в словаре, с помощью простого оператора if:

if(someList is in someDictionary.values()): someCode() #failure 

Однако я понял, что это неправильно для того, что я делаю, и я хочу проверить только включение первого значения списка в значения словаря, например

 if(someList[0] == someValueInDictionary[0]): someCode() #failure 

Я сначала попробовал

 if(someList[0] is in someDictionary.values()[0]): someCode() #failure 

Но это явно не работает. Поскольку someDictionary.values ​​() – это сам список. Я понимаю, что могу перебирать все значения для проверки, например

 for list in someDictionary.values(): if(someList[0] == list[0]): someCode() #failure actualCode() #success 

Но это действительно испортило поток моей программы. Я новый программист на Python, самый опытный в Java, и я стараюсь получить краткость и удобство Python в моих костях, поэтому я думал, что может быть лучшее решение для того, что я тестирую. Если нет, я могу заставить итерацию работать, но если есть, я был бы очень признателен!

Заранее спасибо!

2 Solutions collect form web for “Python – Удобный способ проверить значение в списке, который является частью словаря?”

Используйте функцию any() с выражением-генератором, чтобы найти, есть ли значение словаря, содержащего ваш элемент:

 if any(someList[0] in v for v in someDictionary.itervalues()): # item found 

Используйте someDictionary.values() на Python 3. Выражение генератора someDictionary.values() значения словаря (без создания списка всех значений вначале) и проверяет на каждое значение, один за другим по мере повторения выражения генератора.

any() проверяет только элементы из выражения генератора до тех пор, пока не будет True , а затем прекратит цикл, делая это относительно эффективным.

Если вам нужен ключ соответствующего значения, используйте next() :

 next((k for k, v in someDictionary.iteritems() if someList[0] in v), None) 

который возвращает либо соответствующий ключ, либо None в отсутствии соответствия.

Попробуйте это, предположив, что вы хотите проверить первый элемент someList на первый элемент во всех значениях списка someDictionary (код в вопросе, похоже, указывает, что вы хотите):

 if someList[0] in (x[0] for x in someDictionary.itervalues()): someCode() 

Но если вы хотите проверить, находится ли первый элемент someList в любом из списков значений, попробуйте следующее:

 import itertools as it if someList[0] in it.chain(*someDictionary.itervalues()): someCode() 
  • Могу ли я включить один элемент в список без инструкции else в python?
  • Как удалить элемент из списка кортежей, если второй элемент в каждом кортеже является дубликатом?
  • Промежуточная переменная в понимании списка для одновременной фильтрации и преобразования
  • Как сделать копию списка объектов, которые не изменяются при изменении исходного списка?
  • Динамическая переменная в Python
  • Глубоко скопировать список в Python
  • Как превратить список в вложенный dict в Python
  • Перечисление через список функций в функции в Python динамически
  • + и + = разные операторы?
  • Лучший способ сортировки словаря в группы с использованием Python
  • Пользовательский порядок сортировки списка
  •  
    Interesting Posts for Van-Lav

    Как удалить переменные пространства в каждой строке текстового файла на основе специального условия – однострочный в Python?

    Назначьте сразу несколько переменных с именами динамических переменных

    Внедрение нечувствительного к акценту поиска на django с использованием sqlite

    Python: найти абсолютный путь импортированного модуля

    Получено задание печати Python

    ImportError: нет модуля с именем sklearn.cross_validation

    Почему Python2.7 dict использует больше пространства, чем Python3 dict?

    ImportError: нет модуля с именем psycopg2

    Почему я не могу получить доступ к переменной из другого класса Python

    параметризованные запросы в oursql

    base64 png в python в Windows

    Не удалось получить настройки из файла настроек в django

    Выполнение команды полностью независимо от скрипта

    Нужна помощь в выявлении утечки памяти с использованием matplotlib и колбы

    Преобразование вывода «yield from» в код Python 2.7

    Python - лучший язык программирования в мире.