2017-02-16 5 views
1

Ich habe ein Diktat, das ich als Schlüssel zum Sortieren einer Liste verwenden möchte.Konvertieren Sie die Liste der Ints in Strings als Schlüssel für das Diktat in der Sortierung

names = {'a': 1, 'b': 0, 'c': 2, 'd': 3, 'e': 4, 'f': 5,} 
nodes = {'0': 'b', '1': 'a', '2': 'c', '3': 'd', '4': 'e', '5': 'f'} 

l1 = [0, 1, 2, 3, 4] 
l1.sort(key=names.get) 

Was ich will, ist L1 zu sein [1, 0, 2, 3, 4].

Offensichtlich funktioniert die Sortierzeile nicht, da die Nummern keine richtigen Tasten für das Diktat sind.

Ich habe die Knoten, also denke ich, L1 in String-Werte zu konvertieren, verwenden Sie die resultierende Zeichenfolge als Schlüssel für die Sortierung, aber ich weiß einfach nicht, wie das geht.

Ich könnte dies in einer Art Mega-Schleife tun, aber ich versuche, Python zu lernen, und ich bin sicher, es gibt eine mehr pythische Art, es zu tun.

+0

'l1.sort (key = (lambda x, d = Knoten: d [str (x)]))' ' –

+0

Liste (map (names.get, sortierte (map (nodes.get, map (str, l1))))) "wäre der falsche Weg, es zu tun. –

+0

StevenRumbalski Ihr Lambda ist etwas anders als @ Psidoms angenommene Antwort. Irgendwelche Gedanken, welche Form könnte besser sein? – cryptoref

Antwort

3

können Sie schreiben einen Lambda Ausdruck als Schlüssel:

l1.sort(key=lambda x: nodes.get(str(x)))   # convert the int to str here 
l1 
# [1, 0, 2, 3, 4] 
+0

Danke. Ich muss mein Lambda verbessern. Ich habe es versucht, aber ich habe es nicht richtig eingerichtet. – cryptoref

Verwandte Themen