Reihenfolge beim Konvertieren einer Liste in ein Set beibehalten
Nachdem wir das Problem verstanden haben, wollen wir Methoden untersuchen, um eine Liste in ein Set umzuwandeln und dabei die ursprüngliche Reihenfolge der Elemente beizubehalten.
Methode 1: Verwendung eines Dictionarys zur Beibehaltung der Reihenfolge
Ein Ansatz ist die Verwendung eines Dictionarys, um die Reihenfolge der Elemente zu verfolgen. Seit Python 3.7 behalten Dictionarys standardmäßig die Einfüge Reihenfolge bei.
Erstellen Sie eine neue Datei mit dem Namen dict_approach.py:
## Verwendung eines Dictionarys zur Beibehaltung der Reihenfolge
fruits = ["apple", "banana", "orange", "apple", "pear", "banana"]
## Erstelle ein Dictionary mit Listenelementen als Keys
## Dies entfernt automatisch Duplikate und behält die Reihenfolge bei
unique_fruits_dict = dict.fromkeys(fruits)
## Konvertiere Dictionary-Keys zurück in eine Liste
unique_fruits = list(unique_fruits_dict)
print("Original list:", fruits)
print("Unique elements (order preserved):", unique_fruits)
Führen Sie die Datei aus:
python3 dict_approach.py
Sie sollten Folgendes sehen:
Original list: ['apple', 'banana', 'orange', 'apple', 'pear', 'banana']
Unique elements (order preserved): ['apple', 'banana', 'orange', 'pear']
Beachten Sie, dass die Reihenfolge des ersten Auftretens jedes Elements beibehalten wird.
Methode 2: Verwendung von OrderedDict
Für Benutzer von Python-Versionen vor 3.7 oder um die Absicht expliziter zu machen, können wir OrderedDict aus dem collections-Modul verwenden.
Erstellen Sie eine neue Datei mit dem Namen ordered_dict_approach.py:
## Verwendung von OrderedDict zur Beibehaltung der Reihenfolge
from collections import OrderedDict
fruits = ["apple", "banana", "orange", "apple", "pear", "banana"]
## Erstelle ein OrderedDict mit Listenelementen als Keys
## Dies entfernt automatisch Duplikate und behält die Reihenfolge bei
unique_fruits_ordered = list(OrderedDict.fromkeys(fruits))
print("Original list:", fruits)
print("Unique elements (order preserved):", unique_fruits_ordered)
Führen Sie die Datei aus:
python3 ordered_dict_approach.py
Die Ausgabe sollte sein:
Original list: ['apple', 'banana', 'orange', 'apple', 'pear', 'banana']
Unique elements (order preserved): ['apple', 'banana', 'orange', 'pear']
Methode 3: Verwendung einer Schleife und eines Sets zur Überprüfung
Ein weiterer Ansatz ist die Verwendung einer Schleife und eines Sets, um zu überprüfen, ob wir ein Element bereits gesehen haben.
Erstellen Sie eine neue Datei mit dem Namen loop_approach.py:
## Verwendung einer Schleife und eines Sets zur Beibehaltung der Reihenfolge
fruits = ["apple", "banana", "orange", "apple", "pear", "banana"]
unique_fruits = []
seen = set()
for fruit in fruits:
if fruit not in seen:
seen.add(fruit)
unique_fruits.append(fruit)
print("Original list:", fruits)
print("Unique elements (order preserved):", unique_fruits)
Führen Sie die Datei aus:
python3 loop_approach.py
Die Ausgabe sollte sein:
Original list: ['apple', 'banana', 'orange', 'apple', 'pear', 'banana']
Unique elements (order preserved): ['apple', 'banana', 'orange', 'pear']
Alle drei Methoden erzielen das gleiche Ergebnis: Entfernen von Duplikaten unter Beibehaltung der Reihenfolge des ersten Auftretens jedes Elements.