Проверить, если значение уже существует в списке словарей?
У меня есть список словарей Python, как показано ниже:
a = [
{'main_color': 'red', 'second_color':'blue'},
{'main_color': 'yellow', 'second_color':'green'},
{'main_color': 'yellow', 'second_color':'blue'},
]
Я хотел бы проверить, существует ли словарь с определенным ключом/значением уже в списке, следующим образом:
// is a dict with 'main_color'='red' in the list already?
// if not: add item
3 ответа:
вот один из способов сделать это:
if not any(d['main_color'] == 'red' for d in a): # does not exist
часть в скобках-это выражение генератор, который возвращает
True
для каждого словаря, который имеет пару ключ-значение, которое вы ищете, в противном случаеFalse
.
если ключ также может отсутствовать, приведенный выше код может дать вам
KeyError
. Вы можете исправить это с помощьюget
и указания значения по умолчанию.if not any(d.get('main_color', None) == 'red' for d in a): # does not exist
может быть, это помогает:
a = [{ 'main_color': 'red', 'second_color':'blue'}, { 'main_color': 'yellow', 'second_color':'green'}, { 'main_color': 'yellow', 'second_color':'blue'}] def in_dictlist((key, value), my_dictlist): for this in my_dictlist: if this[key] == value: return this return {} print in_dictlist(('main_color','red'), a) print in_dictlist(('main_color','pink'), a)