2017-12-07 2 views
3

Ich habe gerade erst mit dem Python programmiert. Ich versuche meine Liste als ein Wörterbuch zu sortieren, das ich gemacht habe. das ist das Wörterbuch:Wie sortiere ich eine Liste mehrmals nach meiner Bestellung?

X={'Si':6,'La':5,'Sol':4,'Fa':3,'Mi':2,'Re':1,'Do':0} 

Und ich habe eine Liste wie folgt aus:

A=[['Do', 'Do'], ['Re', 'Do'], ['Do', 'Mi'], ['Si', 'Do'], ['Fa', 'Fa'], ['Mi', 'Fa'], ['Sol', 'Si']] 

Ich beabsichtige, diese Liste zu sortieren in:

[['Do', 'Do'], ['Do', 'Mi'], ['Re', 'Do'], ['Mi', 'Fa'], ['Fa', 'Fa'], ['Sol', 'Si'], ['Si', 'Do']] 

ich diese Liste bedeuten Sortierung durch Sortieren erstes Element dann das zweite Element und dritte und ...

Ich habe versucht, dies zu erfüllen durch mit diesem Code:

A.sort(key=lambda val: X[val[0]]) 

Deshalb konnte ich die Liste nach dem ersten Element sortieren, sondern auch für die zweite oder dritte (wenn die inneren Listen mehr Elemente enthalten) Ich kann sie nicht sortieren. Ich bin kein Groovy Coder, also danke für die Hilfe im Voraus.

Antwort

1

Sortierung nach mehr "Felder":

X = {'Si':6,'La':5,'Sol':4,'Fa':3,'Mi':2,'Re':1,'Do':0} 
A = [['Do', 'Do'], ['Re', 'Do'], ['Do', 'Mi'], ['Si', 'Do'], ['Fa', 'Fa'], ['Mi', 'Fa'], ['Sol', 'Si']] 
result = sorted(A, key=lambda lst: tuple(X[i] for i in lst)) 

print(result) 

Der Ausgang:

[['Do', 'Do'], ['Do', 'Mi'], ['Re', 'Do'], ['Mi', 'Fa'], ['Fa', 'Fa'], ['Sol', 'Si'], ['Si', 'Do']] 
Verwandte Themen