[英]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.