[英]How do I add all integers in one list to integers on another list with different length in the same order in Python?
[英]How do I sort a list in the same order as another list in Python?
假設我有兩個列表,第一個代表總體積,第二個代表各自的唯一項目 ID,其數量等於總體積:
a = [50, 45, 90, 75]
b = [[1,2,3], [5,6,7], [4], [8,9]]
例如,50 是 ID 為 1,2 和 3 的項目的總體積。
我目前正在將列表a
從小到大排序,但我也想安排列表b
的順序以匹配其總容量。 根據之前制作的列表,我希望兩個列表都按如下方式排序:
a = [45, 50, 75, 90]
b = [[5,6,7], [1,2,3], [8,9], [4]]
要對列表a
進行排序,我正在寫:
a.sort(key=lambda x: x, reverse = False)
但我不確定在 Python 中為列表b
編寫代碼以基於相同的模式進行排序。 我必須保持相同的數據結構,所以列表a
和b
必須分別保持列表和列表的列表。
你可以將兩個列表放在一起 zip,根據a
值對元組進行排序,然后解壓:
a = [45, 50, 75, 90]
b = [[5,6,7], [1,2,3], [8,9], [4]]
a,b = map(list, zip(*sorted(zip(a, b), key = lambda x: x[0])))
print(a, b, sep='\n')
Output:
[45, 50, 75, 90]
[[5, 6, 7], [1, 2, 3], [8, 9], [4]]
您可以使用zip()
和兩個列表理解:
a = [50, 45, 90, 75]
b = [[1,2,3], [5,6,7], [4], [8,9]]
a = [x for x, _ in sorted(zip(a, b))]
b = [y for _, y in sorted(zip(a, b))]
print(a)
print(b)
這輸出:
[45, 50, 75, 90]
[[5, 6, 7], [1, 2, 3], [8, 9], [4]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.