Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich doppelte Wörterbücher effizient aus einer Python-Liste entfernen?

Wie kann ich doppelte Wörterbücher effizient aus einer Python-Liste entfernen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-26 13:30:10480Durchsuche

How Can I Efficiently Remove Duplicate Dictionaries from a Python List?

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

Wenn Sie mit Listen von Wörterbüchern in Python arbeiten, müssen Sie möglicherweise Duplikate entfernen. Unabhängig davon, ob die Duplikate identische Schlüssel-Wert-Paare oder eine genaue Schlüssel-Wert-Reihenfolge aufweisen, ist ein effizienter Ansatz erforderlich.

Hashing zum Entfernen von Duplikaten verwenden

Der folgende Einzeiler Entfernt effektiv doppelte Wörterbücher basierend auf ihren Schlüssel-Wert-Paaren:

[dict(t) for t in {tuple(d.items()) for d in l}]

Dieser Ansatz beinhaltet die Konvertierung jedes Wörterbuchs in ein Tupel davon Schlüssel-Wert-Paare. Da Tupel gehasht werden können, können Sie die festgelegte Datenstruktur nutzen, um Duplikate zu eliminieren. Der resultierende Satz enthält eindeutige Tupel, die dann wieder in Wörterbücher umgewandelt werden.

Bewahrung der Reihenfolge

Wenn die Reihenfolge der Wörterbücher wichtig ist, reicht der obige Ansatz nicht aus. Stattdessen kann eine explizitere Methode verwendet werden:

l = [{'a': 123, 'b': 1234},
        {'a': 3222, 'b': 1234},
        {'a': 123, 'b': 1234}]

seen = set()
new_l = []
for d in l:
    t = tuple(d.items())
    if t not in seen:
        seen.add(t)
        new_l.append(d)

print(new_l)

Dieser Code sammelt nicht doppelte Wörterbücher in einer neuen Liste und behält dabei ihre ursprüngliche Reihenfolge bei. Es verwendet einen Satz, um die gefundenen Tupel zu verfolgen und die Eindeutigkeit sicherzustellen.

Hinweis:

Es ist wichtig zu beachten, dass in einigen Fällen zwei Wörterbücher mit identischen Schlüsseln und Werten verwendet werden führt möglicherweise nicht zum gleichen Tupel. Dies tritt auf, wenn die Wörterbücher unterschiedliche Sequenzen zum Hinzufügen/Entfernen von Schlüsseln haben. Wenn dies in Ihrem Szenario ein Problem darstellt, sollten Sie erwägen, die Elemente jedes Wörterbuchs zu sortieren, bevor Sie das Tupel erstellen.

Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Wörterbücher effizient aus einer Python-Liste entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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