Ich möchte eine Liste von Tupeln basierend auf einer Anzahl von Schlüsseln sortieren. Zum Beispiel habe ich diese Liste von Tupeln:Wie sortiere ich eine Liste von Tupeln basierend auf den Schlüsseln in einer Liste?
list_t = [(1, 3, 5, 6, 9, 10), (1, 2, 3, 4, 5, 61), (1, 2, 3, 0, 9, 81), (1, 2, 6, 7, 9, 54), (1, 3, 5, 6, 12, 43)]
Einmal möchte ich es sortieren, die durch die erste, zweite, dritte und fünfte Element der Tupel:
keys = [0, 1, 2, 4]
list_t_sorted = [(1, 2, 3, 4, 5, 61), (1, 2, 3, 0, 9, 81), (1, 2, 6, 7, 9, 54), (1, 3, 5, 6, 9, 10), (1, 3, 5, 6, 12, 43)]
Und ein anderes Mal, wenn ich müssen sie sortieren, nur durch das dritte Element der Tupel:
keys = [2]
list_t_sorted = [(1, 2, 3, 4, 5, 61), (1, 2, 3, 0, 9, 81), (1, 3, 5, 6, 9, 10), (1, 3, 5, 6, 12, 43), (1, 2, 6, 7, 9, 54)]
Bisher habe ich versucht, diesen Code, aber es die erwarteten Ergebnisse nicht zurück:
def sort_list(keys, list_t):
return sorted(list_t, key=lambda l: (l[x] for x in keys))
Zum Beispiel für keys = [0, 1, 2, 4] gibt es [(1, 3, 5, 6, 9, 10), (1, 2, 3, 4, 5, 61) zurück , (1, 3, 5, 6, 12, 43), (1, 2, 6, 7, 9, 54), (1, 2, 3, 0, 9, 81)], die nicht auf der Basis der Schlüssel.
Kann mir jemand helfen? Vielen Dank!
Sie sagen, dass es nicht die erwarteten Ergebnisse zurückgibt. Was _does_ es zurück? – Delioth
Eine nicht sortierte Tupelliste basierend auf den Schlüsseln. Für keys = [0, 1, 2, 4] gibt es beispielsweise [(1, 3, 5, 6, 9, 10), (1, 2, 3, 4, 5, 61), (1, 3, 5, 6, 12, 43), (1, 2, 6, 7, 9, 54), (1, 2, 3, 0, 9, 81)], die nicht auf Schlüsseln sortiert sind! – Malgi