Python3, как проверить, есть ли какое-то значение словаря в списке? - PullRequest
0 голосов
/ 29 октября 2018
list = [
    {'a': 'a_first', 'b': 'b_first'},
    {'a': 'a_sec', 'b': 'b_sec'},
    {'a': 'a_third', 'b': 'b_third'}
]

Я хочу знать значение 'b_sec' в ключе списка 'b'.

Пример:

if 'b_sec' is in list's value of 'b':
    print('found')

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018
>>> 'b_sec' in [d['b'] for d in list]
True
>>> 'b_fourth' in [d['b'] for d in list]
False
0 голосов
/ 29 октября 2018

Просто используйте any, встроенную функцию Python, чтобы проверить, выполняется ли условие, ну, в общем, any из многих. any ломается рано и избегает ложных итераций, когда встречается первый истинный элемент:

if any(d.get('b') == 'b_sec' for d in lst):  # do not use 'list' as a name
    # do stuff

Использование d.get('b') вместо d['b'] более надежно, так как не вызовет ошибку, если 'b' не входит ни в один из диктов. Обратите внимание, что если по какой-либо причине искомое значение было None, вам пришлось бы указать другое значение по умолчанию, равное get, например, d.get('b', '').

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