Python: die Erstellung einer "Menge von Tupeln" aus einer "Liste von Tupeln" , nicht um zu nehmen Berücksichtigung
Wenn ich die Liste von Tupeln wie folgt:
[('a', 'b'), ('c', 'd'), ('a', 'b'), ('b', 'a')]
Ich möchte Duplikate von Tupeln (Doppel-sowohl in Bezug auf Inhalt und Reihenfolge der Elemente im inneren), so dass die Ausgabe wäre:
[('a', 'b'), ('c', 'd')]
Oder
[('b', 'a'), ('c', 'd')]
Ich versucht, die Umwandlung es dann zur Liste, aber die Ausgabe würde beide pflegen ('b', 'a')
und ('a', 'b')
in der Ergebnismenge!
... setzen alle Elemente in einer Reihe sind, dann erstellen Sie eine Liste von den set-Einträgen - das hat wohl schon vor der Frage
gut, Ihr problem ist, dass
auch sollte man wohl formulieren Sie Ihre Frage, da "duplicate sowohl in Bezug auf Inhalt und Reihenfolge der Elemente innerhalb" bedeutet, dass Sie möchten
gut, Ihr problem ist, dass
('a','b') != ('b','a')
oder genauer hash(('a','b')) != hash(('b','a'))
. Eine erste Liste Verständnis, dass Art jedes Tupel dann konvertieren Sie Sie zu einem Satzauch sollte man wohl formulieren Sie Ihre Frage, da "duplicate sowohl in Bezug auf Inhalt und Reihenfolge der Elemente innerhalb" bedeutet, dass Sie möchten
('a','b')
und ('b','a')
um nicht gleich sein....InformationsquelleAutor Arabasta | 2015-12-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies :
Lassen Sie uns brechen diese nach unten :
Wenn Sie Sortieren eines Tupels, es wird eine sortierte Liste.
Für jedes Tupel
t
ima
Sortieren und konvertieren es zurück zu einem Tupel.Konvertieren Sie die resultierende Liste
b
einem Satz : die Werte sind jetzt einzigartig. Konvertieren zurück in eine Liste.Et voilà !
Beachten Sie, dass Sie überspringen Sie die Erstellung der zwischen-Liste
b
durch die Verwendung eines generator statt einer list comprehension.set([ tuple(sorted(t)) for t in a ])
.set(tuple(sorted(t)) for t in a)
statt.Stimmt, dies ist nicht ein OP-Anforderung. Aber er erwartet, dass eine Ausgabe wie
[('a', 'b'), ('c', 'd')]
, so dass ich dachte, es sein eine Liste.Die endgültige form hat eine Liste, die intermediate-list-comprehension ist unnötig.
Ok, ich sehe, was du meinst. Du hast Recht. Ich werde einfach weiter meine Antwort, wie es ist, weil es einfacher ist, es zu brechen. 🙂
Warum die down-votes?
InformationsquelleAutor Eric Citaire
Wenn Sie nicht dagegen, mit einem frozenset mit einem Satz:
Können Sie konvertieren wieder zu Tupel, wenn vorzuziehen:
Oder mit einem Satz und die Umkehrung der Reihenfolge der Tupel:
InformationsquelleAutor Padraic Cunningham
Kann dies Ihr problem lösen, wenn die Bestellung nicht wichtig.
Ausgabe:
Ich mag diese Lösung, denn es macht keine Annahme über die Länge oder die ursprüngliche innere Ordnung der Tupel.
eigentlich Vorherige war okay. lol. Ich habe gerade bevorzugt Ihr, weil er gerne die Kurzform, aber ich habe nicht bemerkt, es wird nicht die Sortierung der Liste element leider, sondern sortiert die Liste selbst.
yep gemeint
a = map(tuple, map(sorted, l))
, wenn es python2 dannimap
wäre besserInformationsquelleAutor Ahsanul Haque
Built-in-Typen zur Rettung:
InformationsquelleAutor Dima Tisnek