2017-09-15 1 views
0

Ich behalte eine Liste, und jeder Satz hat eine prozentuale Unterstützung (Prozentwert angibt Häufigkeit). Jede Unterstützung ist an einen Satz gebunden.Python Sortieren von Werten nach der ersten Liste im 2D-Array mit Liste und Wert

x:

[('C', 'A'), 66.667] 
[('T', 'A'), 50.0] 
[('C', 'D'), 66.667] 
[('C', 'T'), 66.667] 
[('C', 'W'), 83.333] 
[('A', 'W'), 66.667] 
[('W', 'T'), 50.0] 
[('W', 'D'), 50.0] 

Ich möchte das sortierte Array, ohne auf die Unterstützung, so dass es wie folgt aussieht:

[('A', 'C'), 66.667] 
[('A', 'T'), 50.0] 
[('A', 'W'), 66.667] 
[('C', 'D'), 66.667] 
[('C', 'T'), 66.667] 
[('C', 'W'), 83.333] 
[('D', 'W'), 50.0] 
[('T', 'W'), 50.0] 

Art der Sätze in x [0] dann die gesamte erste Spalte

+0

Überprüfen Sie die [ 'sorted'] (https://docs.python.org/3/library/functions.html#sorted) eingebaute Funktion aus. –

Antwort

2

sortieren die Tupel, sortieren Sie dann die Liste:

lst = sorted([[tuple(sorted(x)), y] for x, y in lst], key=lambda x: x[0]) 
print(lst) 

[[('A', 'C'), 66.667], 
[('A', 'T'), 50.0], 
[('A', 'W'), 66.667], 
[('C', 'D'), 66.667], 
[('C', 'T'), 66.667], 
[('C', 'W'), 83.333], 
[('D', 'W'), 50.0], 
[('T', 'W'), 50.0]] 
+0

Sie müssen den Schlüssel für Ihren äußeren Anruf nicht nach "sortiert" angeben. –

+0

@ZachGates Oh ja, das tue ich. Ich möchte nicht davon ausgehen, dass die Tupel niemals binden werden, in diesem Fall wird eine schlüssellose Sortierung die Bindungen mit dem Prozentsatz brechen, was nicht das ist, was sie wollen. –

+1

Fair genug. Nach dem Lesen der Frage sagte OP, den Prozentsatz zu ignorieren. Gute Antwort. –

Verwandte Themen