在Python中针对一个列表对两个列表进行排序

时间:2019-04-27 08:08:30

标签: python list sorting

我有两个列表,一个列表用于图像,另一个列表用于数组。

l1 = [img1, img2, img3]

l2 = [[1, 2, 3, 4], [3, 5, 5], [1, 4, 5, 9, 8, 8]]

我想按长度对list2进行排序,可以这样做:

l2 = sorted(l2, key=lambda e: len(e[0]), reverse=True)

现在,l2中的元素顺序已更改,

我要保留属于这些列表的图像,

即还必须组织l1以便img1 -> corresponds to [1, 2, 3, 4]

该怎么办?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

zip()sorted一起使用:

l1 = ['img1', 'img2', 'img3']

l2 = [[1, 2, 3, 4], [3, 5, 5], [1, 4, 5, 9, 8, 8]]

l1, l2 = zip(*sorted(zip(l1, l2), key=lambda x: len(x[1]), reverse=True))

print(list(l1)) # ['img3', 'img1', 'img2']
print(list(l2)) # [[1, 4, 5, 9, 8, 8], [1, 2, 3, 4], [3, 5, 5]]