Sortierung der Tupel von Tupeln

[((D,A),0.0),((D,C),0.0),((D,E),0.5)] 

Ich muss die Liste als:

 [((D,E),0.5),((D,A),0.0),((D,C),0.0)] 

Ich habe die sorted() -Funktion verwendet und ich kann auf der Grundlage von Werten 0.5, 0.0 sortieren … Aber ich bin nicht in der Lage, auf die alphabetische Reihenfolge zu sortieren, da ich die Liste in absteigender Reihenfolge nach den Zahlen und in sortieren muss Aufsteigende Reihenfolge der Alphabete, wenn die Zahlen denselben Wert haben.

2 Solutions collect form web for “Sortierung der Tupel von Tupeln”

Benutze ein Tupel als Sortierschlüssel mit einem Negativ auf dem Schwimmer, um die Reihenfolge umzukehren:

 >>> li=[(('D','A'),0.0),(('D','C'),0.0),(('D','E'),0.5)] >>> sorted(li, key=lambda t: (-t[-1],t[0])) [(('D', 'E'), 0.5), (('D', 'A'), 0.0), (('D', 'C'), 0.0)] 

Wenn du keine Negation machst (sag auf einen String oder Buchstabenwert oder etwas nicht numerisch), dann kannst du die Tatsache nutzen, dass die Python-Sortierfunktion stabil ist und die Sortierung in zwei Schritten macht:

 >>> li=[(('D','A'),'A'),(('D','C'),'A'),(('D','E'),'C')] >>> sorted(sorted(li), key=lambda t: t[-1], reverse=True) [(('D', 'E'), 'C'), (('D', 'A'), 'A'), (('D', 'C'), 'A')] 

Ähnlich können Sie liefern sorted mit einem iterable, die das Ergebnis einer anderen sort :

 >>> from operator import itemgetter >>> t = [(('D','A'),0.0),(('D','C'),0.0),(('D','E'),0.5)] >>> sorted(sorted(t), key=itemgetter(1), reverse=True) [(('D', 'E'), 0.5), (('D', 'A'), 0.0), (('D', 'C'), 0.0)] 
  • Wie man Kollokationen im Text findet, python
  • Sortieren eines 2D-Numpy-Arrays um mehrere Achsen
  • Warum beim Vergleich von Python-Tupeln von Objekten ist __eq__ und dann __cmp__ genannt?
  • Python: Sortierdatei nach beliebiger Spalte, wobei Spalte Zeitwerte enthält
  • Python sortieren Groß- und Kleinschreibung
  • Python ttk treeview Sortiernummern
  • Python QuickSort maximale Rekursionstiefe
  • Python lxml schreiben in Datei in vordefinierter Reihenfolge
  • Sortiere Unterlisten in neue Unterlisten?
  • Argsort für ein multidimensionales ndarray
  • Kann ich Text nach seinem numerischen Wert in Python sortieren?
  • Python ist die beste Programmiersprache der Welt.