python - 使用python zip函数将两个列表排序在一起

标签 python list sorting zip

我的问题与将两个列表一起排序的基本问题有点不同。

例如看这段代码:

list1=[3,4,2,1,6,1,4,9,3,5,8]
list2=['zombie','agatha','young','old','later','world',
       'corona','nation','domain','issue','happy']
srt=sorted(list(zip(list1,list2)),reverse=True)
print(srt)

输出结果为:

[(9, 'nation'), (8, 'happy'), (6, 'later'), (5, 'issue'), 
 (4, 'corona'), (4, 'agatha'), (3, 'zombie'), (3, 'domain'), 
 (2, 'young'), (1, 'world'), (1, 'old')]

问题:- 正如我们所见,对于列表 1 中相同的值,我的列表 2 中的元素也按字母降序排列。如果我想按降序对列表 1 进行排序,然后按升序对列表 2 的元素进行排序,其中列表 1 的元素的值相同,以某种简单的方式怎么办。

最佳答案

使用键函数lambda k: (-k[0], k[1])):

list1 = [3, 4, 2, 1, 6, 1, 4, 9, 3, 5, 8]
list2 = ['zombie', 'agatha', 'young', 'old', 'later', 'world', 'corona', 'nation', 'domain', 'issue', 'happy']
srt = sorted(zip(list1, list2), key=lambda k: (-k[0], k[1]))
print(srt)

打印:

[(9, 'nation'), (8, 'happy'), (6, 'later'), (5, 'issue'), (4, 'agatha'), (4, 'corona'), (3, 'domain'), (3, 'zombie'), (2, 'young'), (1, 'old'), (1, 'world')]

关于python - 使用python zip函数将两个列表排序在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62643511/

相关文章:

python - 从文件中打印包含字母范围内的行,不包括所需的限制

python - 打印约束 Gurobi Python

python - 比较当前元组列表和下一个元组列表的值

c - malloc 有时起作用,有时不起作用(通用链表)

Java List.add() UnsupportedOperationException

python - 使用python计算二维数组中特定主项目的多个项目的出现次数

Python:生成所有长度为 N 的唯一有序列表

python - Django ORM - 获取N个随机记录,然后将它们分成2组

mysql - 始终将 NULL 排序为空字符串或 0

php - 按最受欢迎的产品进行排序,保持相关性紧密