我有两个列表,一个列表用于图像,另一个列表用于数组。
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]
该怎么办?谢谢你的帮助。
答案 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]]