我想基於多個鍵對元組列表進行排序。例如,我有元組名單:如何基於列表中的鍵排序元組列表?
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)]
有一次,我想第一,第二,第三和第五的元組的元素對它進行排序:
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)]
另一次我只需要通過元組的第三個元素對它進行排序:
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)]
到目前爲止,我嘗試這種代碼,但它不會返回預期的結果:
def sort_list(keys, list_t):
return sorted(list_t, key=lambda l: (l[x] for x in keys))
例如,對於keys = [0,1,2,4],它返回[(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)]中,不基於鍵。
任何人都可以幫助我嗎?謝謝!
你說這不返回預期的結果。什麼_does_它返回? – Delioth
基於密鑰的元組沒有排序的列表。例如,對於keys = [0,1,2,4],它返回[(1,3,5,6,9,10),(1,2,3,4,5,61),(1, (1,2,3,6,6,12,43),(1,2,6,7,9,54),(1,2,3,0,9,81)],其不在鍵上排序! – Malgi