J'ai une liste de dictionnaires Python), comme suit:
a = [
{'main_color': 'red', 'second_color':'blue'},
{'main_color': 'yellow', 'second_color':'green'},
{'main_color': 'yellow', 'second_color':'blue'},
]
Je voudrais vérifier si un dictionnaire avec une clé/valeur particulière existe déjà dans la liste, comme suit:
// is a dict with 'main_color'='red' in the list already?
// if not: add item
Voici une façon de le faire:
if not any(d['main_color'] == 'red' for d in a):
# does not exist
La partie entre parenthèses est une expression génératrice qui renvoie True
pour chaque dictionnaire contenant la paire clé-valeur que vous recherchez, sinon False
.
Si la clé peut également manquer, le code ci-dessus peut vous donner un KeyError
. Vous pouvez résoudre ce problème en utilisant get
et en fournissant une valeur par défaut.
if not any(d.get('main_color', None) == 'red' for d in a):
# does not exist
Peut-être que cela aide:
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)
Vous recherchez peut-être une fonction dans ce sens:
def add_unique_to_dict_list(dict_list, key, value):
for d in dict_list:
if key in d:
return d[key]
dict_list.append({ key: value })
return value