Beim Arbeiten mit Wörterbuchlisten kann es erforderlich sein, Duplikate basierend auf identischem Schlüssel zu entfernen -Wert-Paare. Dieser Artikel bietet detaillierte Anleitungen dazu, wie Sie dies mit den integrierten Funktionen von Python und einem effizienteren Ansatz erreichen können, der die Wörterbuchreihenfolge beibehält.
Ein Ansatz besteht darin, jedes Wörterbuch in zu konvertieren ein Tupel seiner Elemente. Da Tupel hashbar sind, können sie als Schlüssel in einem Satz verwendet werden, um doppelte Wörterbücher zu identifizieren. Der folgende Python-Code demonstriert diese Methode:
new_list = [dict(t) for t in {tuple(d.items()) for d in old_list}]
Dieser Code durchläuft die ursprüngliche Liste der Wörterbücher (old_list) und erstellt eine Reihe von Tupeln, die die Elemente in jedem Wörterbuch darstellen. Das Set entfernt automatisch Duplikate. Der resultierende Satz wird dann mithilfe eines Wörterbuchverständnisses zurück in eine Liste von Wörterbüchern konvertiert.
Wenn jedoch die Reihenfolge der Wörterbücher wichtig ist, ist dies mit der oben genannten Methode nicht der Fall konserviere es. Um dies zu erreichen, wird der folgende alternative Ansatz empfohlen:
seen = set() new_list = [] for d in old_list: t = tuple(sorted(d.items())) if t not in seen: seen.add(t) new_list.append(d)
Dieser Code erstellt eine Reihe von Tupeln, die die geordneten Elemente in jedem Wörterbuch darstellen. Die Funktion sorted() stellt sicher, dass die Elemente in einer konsistenten Reihenfolge sind. Der Satz dient dann dazu, doppelte Tupel auszuschließen, und die resultierende Liste behält die ursprüngliche Wörterbuchreihenfolge bei.
Wenn die Wörterbücher verschachtelte Wörterbücher enthalten, erfordert der bereitgestellte Code eine geringfügige Änderung, um die zu reduzieren verschachtelte Strukturen. Das folgende Code-Snippet veranschaulicht dies:
def flatten_dict(d): new_d = {} for k, v in d.items(): if isinstance(v, dict): v = flatten_dict(v) for k2, v2 in v.items(): new_d[f'{k}.{k2}'] = v2 else: new_d[k] = v return new_d new_list = [dict(t) for t in {tuple(flatten_dict(d).items()) for d in old_list}]
In diesem Artikel haben wir zwei Möglichkeiten untersucht, doppelte Wörterbücher aus einer Liste in Python zu entfernen: die Verwendung von Sets zur Deduplizierung und die Beibehaltung des Originals Bestellung mit benutzerdefinierter Logik. Die Wahl der Methode richtet sich nach den konkreten Anforderungen der Aufgabenstellung.
Das obige ist der detaillierte Inhalt vonWie entferne ich doppelte Wörterbücher aus einer Liste in Python und behalte dabei die Reihenfolge bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!