python对两个列表进行排序

我正在尝试将两个列表排序在一起:

list1 = [1, 2, 5, 4, 4, 3, 6]

list2 = [3, 2, 1, 2, 1, 7, 8]

list1, list2 = (list(x) for x in zip(*sorted(zip(list1, list2))))

无论如何,这样做使我获得了输出

list1 = [1, 2, 3, 4, 4, 5, 6]

list2 = [3, 2, 7, 1, 2, 1, 8]

而我想在第一个列表中将初始顺序保持为等于4:我想要的是

list1 = [1, 2, 3, 4, 4, 5, 6]

list2 = [3, 2, 7, 2, 1, 1, 8]

我需要做什么?我不想使用循环进行气泡排序。任何帮助表示赞赏。

回答:

key为您的排序使用一个仅比较该对中第一个元素的参数。由于Python的排序是稳定的,因此可以保证当第一个元素相等时,第二个元素的顺序将保持不变。

>>> from operator import itemgetter

>>> [list(x) for x in zip(*sorted(zip(list1, list2), key=itemgetter(0)))]

[[1, 2, 3, 4, 4, 5, 6], [3, 2, 7, 2, 1, 1, 8]]

等效于:

>>> [list(x) for x in zip(*sorted(zip(list1, list2), key=lambda pair: pair[0]))]

[[1, 2, 3, 4, 4, 5, 6], [3, 2, 7, 2, 1, 1, 8]]

以上是 python对两个列表进行排序 的全部内容, 来源链接: utcz.com/qa/405604.html

回到顶部