a = [[1,3,45,6,78,9],[2,6,5,88,3,4],[44,66,2,4,77,12]]
b = [4,6,3]
這是python中的兩個串列,現在第一個串列a中的每個元素都對應于串列b中具有相同索引的元素。即 a[0]:4,a[1]:6,a[2]:3 等等。
現在我想對串列 b 進行排序,然后列印與串列 a 對應的各個值。我不能使用字典,因為它給出了 a 不可散列的錯誤。
我想要的輸出是:
x = [[44,66,2,4,77,12], [1,3,45,6,78,9], [2,6,5,88,3,4]]
uj5u.com熱心網友回復:
你可以做 :
a = [[1,3,45,6,78,9],[2,6,5,88,3,4],[44,66,2,4,77,12]]
b = [4,6,3]
c = sorted([[b[i],a[i]] for i in range(len(a))])
x = [i[1] for i in c]
uj5u.com熱心網友回復:
它可以在一行上完成,例如:
a = [[1,3,45,6,78,9],[2,6,5,88,3,4],[44,66,2,4,77,12]]
b = [4,6,3]
c = [el for _, el in sorted(zip(b, a))]
print(c)
輸出:
[[44, 66, 2, 4, 77, 12], [1, 3, 45, 6, 78, 9], [2, 6, 5, 88, 3, 4]]
(如果 中的值b不是唯一的,它將按對應的值中的第一個元素排序a)
uj5u.com熱心網友回復:
只要您避免使用任何串列作為鍵,使用字典就沒有問題。在這種情況下,您可以使用bfor 鍵和a值。例如,
d = dict(zip(b,a))
print([d[k] for k in sorted(d)])
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/427519.html
上一篇:如何按字母對嵌套字典進行排序?
