Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich doppelte Wörterbücher aus einer Python-Liste entfernen und dabei die Reihenfolge beibehalten oder ignorieren?

Wie kann ich doppelte Wörterbücher aus einer Python-Liste entfernen und dabei die Reihenfolge beibehalten oder ignorieren?

Susan Sarandon
Susan SarandonOriginal
2024-11-28 00:21:10166Durchsuche

How Can I Remove Duplicate Dictionaries from a Python List While Preserving or Ignoring Order?

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

Anhand einer Liste von Wörterbüchern besteht das Ziel darin, alle Wörterbücher zu entfernen, die identische Schlüsselwörter haben. Wertepaare. Beispielsweise würde die Umwandlung der Liste [{'a': 123}, {'b': 123}, {'a': 123}] in [{'a': 123}, {'b': 123}] Folgendes tun Erreichen Sie dieses Ziel.

Um dies zu erreichen, können Sie eine einfache, aber leistungsstarke Technik anwenden:

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

Dieser Ansatz funktioniert auf drei verschiedene Arten Schritte:

  1. Konvertieren Sie jedes Wörterbuch in ein Tupel, wobei das Tupel die Schlüssel-Wert-Paare des Wörterbuchs speichert.
  2. Transformieren Sie die Liste der Tupel in einen Satz und entfernen Sie so effektiv Duplikate, da dies bei Sätzen nicht der Fall ist mehrere Instanzen desselben Werts enthalten.
  3. Rekonstruieren Sie die Wörterbücher aus den Tupeln mit dict() Funktion.

Die Variablen im Codeausschnitt stellen Folgendes dar:

  • l: Die ursprüngliche Liste der Wörterbücher
  • d: Ein einzelnes Wörterbuch innerhalb der Liste
  • t: Ein Tupel, das die Schlüssel-Wert-Paare dieses Wörterbuchs darstellt

Bei Wartung Da die ursprüngliche Reihenfolge der Wörterbücher von entscheidender Bedeutung ist, können Sie den folgenden modifizierten Ansatz verwenden:

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

Dieser Code beinhaltet einen zusätzlichen Schritt der Verwaltung eines gesehenen Satzes, um zu verfolgen, welche Tupel (und damit Wörterbücher) bereits gefunden wurden . Wenn ein Tupel in der angezeigten Menge nicht gefunden wird, wird es der Menge hinzugefügt und das entsprechende Wörterbuch wird an die Liste new_l angehängt.

Es ist wichtig zu beachten, dass der direkte Vergleich von Wörterbüchern mithilfe von Gleichheit (==) führt möglicherweise nicht immer zum gewünschten Ergebnis, wenn die Wörterbücher auf unterschiedliche Weise geändert wurden. Wenn die Reihenfolge der Schlüssel-Wert-Paare wichtig ist, wird empfohlen, die Elemente des Wörterbuchs vor dem Erstellen des Tupels zu sortieren.

Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Wörterbücher aus einer Python-Liste entfernen und dabei die Reihenfolge beibehalten oder ignorieren?. 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