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() 
  • Как получить n следующих значений генератора в списке (python)
  • Как вы присоединяетесь ко всем элементам в списке в python
  • Python: сортировка списка и изменение другого
  • добавление пункта в словарь python с ключом имени переменной
  • Добавление значения в один список в словаре добавляет значение ко всем спискам в словаре
  • Значения Python для нескольких списков в одном понимании списка
  • Python: сортировка словаря списков
  • Прочитать список из txt-файла в Python
  •  
    Interesting Posts for Van-Lav

    python – загрузка сюжета из памяти в s3 с использованием matplotlib и boto

    передача ответа ответа селена на скрипит

    Python: понимание итераторов и `join ()` лучше

    как передать XML-файл в lxml для анализа?

    Выберите файл, начинающийся с заданной строки.

    Java для передачи args скрипту Python

    «ImportError: невозможно импортировать имя StanfordNERTagger» в NLTK

    Как создать цикл событий с некоторыми сопрограммами, выполняемыми навсегда?

    не удалось использовать TfidfVectorizer в Google приложении

    Невозможно установить lxml на windows, фатальная ошибка C1083: Не удается открыть файл include: 'libxml / xmlversion.h'

    Python: Какова самая многофункциональная библиотека для загрузки звуковых метаданных из разных форматов?

    Использование Pylint для отображения ошибок и предупреждений

    Как включить новую строку в функцию python raw_input ()?

    Создание списков / отчетов со встроенными резюме в Django

    Получить размеры видеофайла

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