Heim > Backend-Entwicklung > Python-Tutorial > Wie kann man doppelte Wörterbücher effizient aus einer Python-Liste entfernen und gleichzeitig die Reihenfolge wahren?

Wie kann man doppelte Wörterbücher effizient aus einer Python-Liste entfernen und gleichzeitig die Reihenfolge wahren?

DDD
Freigeben: 2024-11-30 15:27:10
Original
309 Leute haben es durchsucht

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

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

Beim Umgang mit einer Liste von Wörterbüchern ist es oft notwendig, Duplikate zu entfernen, die den gleichen Schlüssel haben. Wertepaare. Dieser Artikel bietet eine robuste Lösung mit Python.

Problemstellung:

Anhand einer Liste von Wörterbüchern besteht das Ziel darin, die Wörterbücher zu entfernen, die denselben Schlüssel und Wert enthalten Paare.

Lösung:

Um dies zu erreichen, verwenden wir einen zweistufigen Ansatz Ansatz:

  1. Wörterbücher in hashbare Tupel konvertieren:
    Wir konvertieren jedes Wörterbuch in ein Tupel, in dem die Elemente die Schlüssel-Wert-Paare sind. Dieser Schritt ist von entscheidender Bedeutung, da Wörterbücher nicht hashbar sind, Tupel jedoch schon.
  2. Duplikate mit einem Satz entfernen:
    Wir erstellen einen Satz aus der Liste der Tupel. Ein Satz entfernt automatisch Duplikate und hinterlässt nur eindeutige Tupel.

Um die Wörterbücher aus den eindeutigen Tupeln zu rekonstruieren, verwenden wir ein Wörterbuchverständnis. Hier ist der Codeausschnitt:

original_list = [{'a': 123}, {'b': 123}, {'a': 123}]

# Convert dictionaries to tuples
tuples = [tuple(d.items()) for d in original_list]

# Remove duplicates using a set
unique_tuples = set(tuples)

# Reconstruct dictionaries
result_list = [dict(t) for t in unique_tuples]

print(result_list)
Nach dem Login kopieren

Ausgabe:

[{'a': 123}, {'b': 123}]
Nach dem Login kopieren

Bewahrung der Reihenfolge:

Bei Beibehaltung des Originals Da die Reihenfolge der Wörterbücher von entscheidender Bedeutung ist, können wir eine etwas andere verwenden Ansatz:

  1. Erstellen Sie einen gesehenen Satz:
    Initialisieren Sie einen Satz namens „gesehen“, um die eindeutigen Tupel zu verfolgen.
  2. Iterieren Sie über die Wörterbücher:
    Durchlaufen Sie die ursprüngliche Liste und konvertieren Sie sie für jedes Wörterbuch in ein Tupel. Wenn das Tupel nicht in der angezeigten Menge enthalten ist, fügen Sie es hinzu und hängen Sie das Wörterbuch an die Ergebnisliste an.

Hier ist der Code:

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

seen = set()
result_list = []

for d in original_list:
    t = tuple(d.items())
    if t not in seen:
        seen.add(t)
        result_list.append(d)

print(result_list)
Nach dem Login kopieren

Ausgabe:

[{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann man doppelte Wörterbücher effizient aus einer Python-Liste entfernen und gleichzeitig die Reihenfolge wahren?. 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