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