Однострочный Python3 для проверки наличия элемента в значениях словаря - PullRequest
0 голосов
/ 26 июня 2018

Я ищу возможную однострочную строку для возврата эквивалента

'A' in ['A', 'B', 'C']

, но в следующем случае: Предположим, у меня есть словарь, содержащий списки в качестве значений, например:

dictionary = {'key1': ['A', 'B', 'C', 'D'], 
              'key2': ['E', 'F'], 
              'key3': ['G', 'H', 'I']}

Пока что самое близкое, что я мог получить, было что-то вроде:

r = {v[0] for k, v in dictionary.items() if 'A' in v}

, однако это возвращает набор длины 0 или 1, возвращающий элемент списка, на наличие которого я хочу проверить.

Я бы хотел получить только True / False относительно того, присутствует ли «A» в любом из списков, хранящихся в значениях словаря.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Если вы хотите прекратить итерации по всем значениям dict даже после нахождения совпадения, используйте itertools.takewhile

import itertools
if list(itertools.takewhile(lambda v: 'J' in v, dictionary.values())):
    # Found
else:
    # Not found
0 голосов
/ 26 июня 2018

Вам нужна any() встроенная функция:

any('A' in v for v in dictionary.values())

any() сама по себе оптимальна с точки зрения возврата True, как только встретите истинное предложение, ноесли вы хотите еще больше повысить производительность, вы можете использовать set объекты вместо списков для сохранения значений для их проверки членства линейно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...