Heim > Backend-Entwicklung > Python-Tutorial > Wie entferne ich doppelte Wörterbücher aus einer Liste in Python und behalte dabei die Reihenfolge bei?

Wie entferne ich doppelte Wörterbücher aus einer Liste in Python und behalte dabei die Reihenfolge bei?

DDD
Freigeben: 2024-11-26 11:05:11
Original
724 Leute haben es durchsucht

How to Remove Duplicate Dictionaries from a List in Python While Preserving Order?

Entfernen doppelter Wörterbücher in einer Liste in Python

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.

Verwenden von Sets für die Deduplizierung

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}]
Nach dem Login kopieren

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.

Bewahrung der Reihenfolge mit benutzerdefinierter Logik

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)
Nach dem Login kopieren

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.

Umgang mit verschachtelten Wörterbüchern

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}]
Nach dem Login kopieren

Fazit

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage