webentwicklung-frage-antwort-db.com.de

Überprüfen Sie, ob der Wert in der Liste der Wörterbücher bereits vorhanden ist.

Ich habe eine Python Liste von Wörterbüchern, wie folgt:

a = [
    {'main_color': 'red', 'second_color':'blue'},
    {'main_color': 'yellow', 'second_color':'green'},
    {'main_color': 'yellow', 'second_color':'blue'},
]

Ich möchte wie folgt überprüfen, ob ein Wörterbuch mit einem bestimmten Schlüssel/Wert bereits in der Liste vorhanden ist:

// is a dict with 'main_color'='red' in the list already?
// if not: add item
99
AP257

Hier ist eine Möglichkeit, dies zu tun:

if not any(d['main_color'] == 'red' for d in a):
    # does not exist

Der Teil in Klammern ist ein Generatorausdruck, der True für jedes Wörterbuch mit dem gesuchten Schlüssel-Wert-Paar zurückgibt, andernfalls False.


Wenn der Schlüssel auch fehlen könnte, kann der obige Code ein KeyError ergeben. Sie können dies beheben, indem Sie get verwenden und einen Standardwert angeben.

if not any(d.get('main_color', None) == 'red' for d in a):
    # does not exist
209
Mark Byers

Vielleicht hilft das:

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)
5

Vielleicht ist eine Funktion in dieser Richtung das, wonach Sie suchen:

 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
3
Cameron