Wie man eine Liste in Python dedupliziert
- Python-Liste ohne Wahrung der Ordnung entpacken
- Deduplizieren einer Python-Liste unter Beibehaltung der Reihenfolge
Manchmal haben wir in Python eine Liste von Werten, unter denen einige Duplikate sind.
Es ist ein alltäglicher Anwendungsfall, alle Duplikate aus der Liste zu entfernen, so dass
alle übrigen Werte in der Liste sind eindeutig.
Dies können wir mit verschiedenen Methoden erreichen, von denen einige die
ursprüngliche Reihenfolge der Elemente, während andere nicht.
Python-Liste ohne Wahrung der Ordnung entpacken
Wenn es keine Voraussetzung ist, die ursprüngliche Ordnung zu erhalten,
können wir eine Liste unter Verwendung der eingebauten Set
Datenstruktur deduplizieren.
set
ist eine Datenstruktur, die nur ein einziges Element enthalten darf.
Indem wir eine solche set
aus unserer ursprünglichen Liste konstruieren, können alle doppelten Elemente
werden ignoriert.
Dann können wir die Menge wieder in eine Liste zurück konvertieren und erhalten eine Liste von eindeutigen Elementen.
Leider ändert sich die Reihenfolge der Elemente, da das Deduplizieren
Die Funktionalität der Set
Datenstruktur wird durch Hash-Tabellen implementiert, die
Ich weiß nicht mehr, welche Elemente zuerst eingefügt wurden.
>>> names = ['Bob', 'Stacy', 'Sarah', 'Jim', 'Stacy', 'Jim']
>>> unique_set = set(names)
>>> unique_list = list(unique_set)
>>> unique_list
['Stacy', 'Sarah', 'Jim', 'Bob']
Wenn Sie das Paket NumPy für wissenschaftliches Rechnen in Python verwenden, können Sie sich nicht erinnern, welche Elemente zuerst eingefügt wurden,
können Sie auch die numpy.unique()
Funktion verwenden.
>>> import numpy
>>> names = ['Bob', 'Stacy', 'Sarah', 'Jim', 'Stacy', 'Jim']
>>> numpy.unique(names).tolist()
['Bob', 'Jim', 'Sarah', 'Stacy']
Beachten Sie, dass die obige Methode auch nicht die ursprüngliche Reihenfolge der Elemente beibehält.
Der ordnungserhaltende NumPy
Weg ist mehr involviert, und Sie können ihn unten finden.
Deduplizieren einer Python-Liste unter Beibehaltung der Reihenfolge
Eine einfache Lösung, die es erlaubt, die ursprüngliche Reihenfolge zu erhalten, ist die Verwendung einer doppelten for-each-Schleife.
Die erste Schleife durchläuft alle Elemente der ursprünglichen Liste.
Die zweite Schleife prüft, ob wir bereits ein Element mit dem gleichen Wert gesehen haben.
Wenn wir es nicht gesehen haben, fügen wir es der unique
Liste hinzu, die am Ende
wird einzigartige Elemente in der ursprünglichen Reihenfolge enthalten.
>>> names = ['Bob', 'Stacy', 'Sarah', 'Jim', 'Stacy', 'Jim']
>>> unique = []
>>> for name in names: # 1st loop
... if name not in unique: # 2nd loop
... unique.append(name)
...
>>> unique
['Bob', 'Stacy', 'Sarah', 'Jim']
Eine weitere Möglichkeit, eine Liste unter Beibehaltung der ursprünglichen Reihenfolge zu deduplizieren, ist die Verwendung von
die Collections.OrderedDict
Datenstruktur.
OrderedDict
ist eine spezielle Art einer Dictionary-Datenstruktur in Python, die
merkt sich die Reihenfolge der Schlüsseleinführung.
>>> from collections import OrderedDict
>>> names = ['Bob', 'Stacy', 'Sarah', 'Jim', 'Stacy', 'Jim']
>>> unique = list(OrderedDict.fromkeys(names))
>>> unique
['Bob', 'Stacy', 'Sarah', 'Jim']
Wenn Sie die Pandas Python-Datenanalyse-Bibliothek verwenden, können Sie sich die Reihenfolge der Schlüsseleinfügung merken,
pandas.unique
könnte ebenfalls hilfreich sein. Diese Methode ist ordnungserhaltend.
>>> import pandas
>>> names = ['Bob', 'Stacy', 'Sarah', 'Jim', 'Stacy', 'Jim']
>>> pandas.unique(names).tolist()
['Bob', 'Stacy', 'Sarah', 'Jim']
Der Weg eines NumPy, eine Liste zu deduplizieren und dabei die Reihenfolge beizubehalten, ist etwas komplizierter.
Sie müssen sich einen Index jedes einzelnen Elements merken und dann eine eindeutige Liste erstellen.
von der ursprünglichen, die solche Indizes verwendet.
>>> import numpy
>>> names = ['Bob', 'Stacy', 'Sarah', 'Jim', 'Stacy', 'Jim']
>>> _, indexes = numpy.unique(names, return_index=True)
>>> unique = [names[i] for i in numpy.sort(indexes)]
>>> unique
['Bob', 'Stacy', 'Sarah', 'Jim']
Verwandter Artikel - Python List
- Alle Vorkommen eines Elements aus einer Liste in Python entfernen
- Konvertieren eines Dictionaries in eine Liste in Python
- Duplikate aus Liste entfernen in Python
- Wie erhält man den Durchschnitt einer Liste in Python
- Was ist der Unterschied zwischen den Listenmethoden append und extend
- Wie man eine Liste in Python in eine Zeichenkette konvertiert