Wie finde ich die Duplikate in einer Liste mit ganzen Zahlen und erstelle eine weitere Liste mit den Duplikaten?
Das ist eine Variante der Eimersorte.
Wie finde ich die Duplikate in einer Liste mit ganzen Zahlen und erstelle eine weitere Liste mit den Duplikaten?
Das dritte Beispiel der akzeptierten Antwort gibt eine falsche Antwort und versucht nicht, Duplikate zu geben. Hier ist die richtige Version:
number_lst = [1, 1, 2, 3, 5, ...]
seen_set = set()
duplicate_set = set(x for x in number_lst if x in seen_set or seen_set.add(x))
unique_set = seen_set - duplicate_set
Ein sehr einfacher und schneller Weg, Duplikate mit einer Iteration in Python zu finden, ist:
testList = ['red', 'blue', 'red', 'green', 'blue', 'blue']
testListDict = {}
for item in testList:
try:
testListDict[item] += 1
except:
testListDict[item] = 1
print testListDict
Die Ausgabe wird wie folgt aussehen:
>>> print testListDict
{'blue': 3, 'green': 1, 'red': 2}
Dies und mehr in meinem Blog http://www.howtoprogramwithpython.com
Ich beteilige mich viel zu spät an dieser Diskussion. Trotzdem würde ich dieses Problem gerne mit Einzeilern behandeln. Denn das ist der Charme von Python. Wenn wir nur die Duplikate in eine separate Liste (oder eine beliebige Sammlung) bekommen wollen, würde ich vorschlagen, wie folgt zu verfahren: Sagen wir, wir haben eine duplizierte Liste, die wir als 'Ziel' bezeichnen können
target=[1,2,3,4,4,4,3,5,6,8,4,3]
Wenn wir nun die Duplikate erhalten wollen, können wir den One-Liner wie unten verwenden:
duplicates=dict(set((x,target.count(x)) for x in filter(lambda rec : target.count(rec)>1,target)))
Mit diesem Code werden die doppelten Datensätze als Schlüssel und die Anzahl als Wert in das Wörterbuch "Duplikate" eingetragen. Das Wörterbuch "Duplikate" sieht dann wie folgt aus:
{3: 3, 4: 4} #it saying 3 is repeated 3 times and 4 is 4 times
Wenn Sie nur alle Datensätze mit Duplikaten allein in einer Liste haben wollen, ist der Code wieder viel kürzer:
duplicates=filter(lambda rec : target.count(rec)>1,target)
Die Ausgabe wird sein:
[3, 4, 4, 4, 3, 4, 3]
Dies funktioniert perfekt in Python 2.7.x + Versionen
Methode 1:
list(set([val for idx, val in enumerate(input_list) if val in input_list[idx+1:]]))
Erläuterung: [val for idx, val in enumerate(input_list) if val in input_list[idx+1:]] ist ein Listenverständnis, das ein Element zurückgibt, wenn das gleiche Element ab seiner aktuellen Position in der Liste, dem Index, vorhanden ist.
Beispiel: input_list = [42,31,42,31,3,31,31,5,6,6,6,6,6,7,42]
Beginnend mit dem ersten Element in der Liste, 42, mit Index 0, wird geprüft, ob das Element 42 in input_list[1:] vorhanden ist (d. h. von Index 1 bis zum Ende der Liste) Da 42 in input_list[1:] vorhanden ist, wird 42 zurückgegeben.
Dann geht es zum nächsten Element 31 mit dem Index 1 und prüft, ob das Element 31 in der input_list[2:] (d.h. von Index 2 bis zum Ende der Liste) vorhanden ist, Da 31 in input_list[2:] vorhanden ist, wird 31 zurückgegeben.
ähnlich geht es durch alle Elemente in der Liste, und gibt nur die wiederholten/duplizierten Elemente in einer Liste zurück.
Dann, weil wir Duplikate haben, in einer Liste, müssen wir eine von jedem Duplikat, d.h. entfernen Sie Duplikat unter Duplikate, und um dies zu tun, rufen wir eine Python built-in namens set(), und es entfernt die Duplikate,
Dann haben wir zwar eine Menge, aber keine Liste, und um eine Menge in eine Liste umzuwandeln, verwenden wir list(), und das wandelt die Menge der Elemente in eine Liste um.
Methode 2:
def dupes(ilist):
temp_list = [] # initially, empty temporary list
dupe_list = [] # initially, empty duplicate list
for each in ilist:
if each in temp_list: # Found a Duplicate element
if not each in dupe_list: # Avoid duplicate elements in dupe_list
dupe_list.append(each) # Add duplicate element to dupe_list
else:
temp_list.append(each) # Add a new (non-duplicate) to temp_list
return dupe_list
Erläuterung: Hier erstellen wir zunächst zwei leere Listen. Dann durchlaufen wir alle Elemente der Liste, um zu sehen, ob es in temp_list (anfangs leer) existiert. Wenn es in temp_list nicht vorhanden ist, dann fügen wir es zu temp_list hinzu, indem wir anhängen. Methode.
Wenn es bereits in temp_list vorhanden ist, bedeutet dies, dass das aktuelle Element der Liste ein Duplikat ist, und daher müssen wir es zu dupe_list hinzufügen, indem wir anhängen. Methode.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
2 Stimmen
Mögliche Duplikate von Wie entfernt man Duplikate aus einer Liste in Python unter Beibehaltung der Reihenfolge?
3 Stimmen
Wollen Sie die Duplikate einmalig oder jedes Mal, wenn sie wieder gesehen werden?
0 Stimmen
Ich denke, diese Frage wurde hier bereits sehr viel effizienter beantwortet. stackoverflow.com/a/642919/1748045 Schnittpunkt ist eine eingebaute Methode von set und sollte genau das tun, was erforderlich ist