根据多个值对我的 python 列表进行排序

Posted

技术标签:

【中文标题】根据多个值对我的 python 列表进行排序【英文标题】:sort my python list based on multiple values 【发布时间】:2022-01-14 17:31:24 【问题描述】:

我想对列表进行如下排序:

输入:

mylist = [['12','25'],['4','7'],['12','14']]

输出:

[['4','7'],['12','14'],['12','25']]

我使用的当前代码仅对列表的第一个数字进行排序:

def defe(e):
   return int(e[0])
mylist = [['12','25'],['4','7'],['12','14']]
mylist.sort(key=defe)
print(mylist)

输出:

[['4','7'],['12','25'],['12','14']]

【问题讨论】:

你只需要mylist.sort(),序列已经按字典顺序排序。但是,您的排序字符串,而不是整数。所以您可能只想将所有内容转换为整数,mylist = [[int(x) for x in sub] for sub in mylist] 然后只需使用mylist.sort() 注意,这里的“变量”是错误的术语。 内置的python sort() 将使用第一个列表条目作为主排序键,第二个作为辅助排序键,依此类推。它已经做了你想要的——删除“key”参数:mylist.sort()会给你你想要的 sorted([['12','25'],['4','7'],['12','14']], key=lambda sl:(list(map(int,sl)))) 注意:您也可以简单地首先对第二个数字进行排序,然后对第一个数字进行排序(因为排序是稳定的)。 【参考方案1】:

试试:

sorted(mylist, key=lambda x: (int(x[0]), int(x[1])))

输出:

[['4', '7'], ['12', '14'], ['12', '25']]

如果子列表长于 2,则

sorted(mylist, key=lambda x: list(map(int, x)))

更好。

【讨论】:

以上是关于根据多个值对我的 python 列表进行排序的主要内容,如果未能解决你的问题,请参考以下文章

根据 AIC 值对模型列表进行排名

根据另一个列表中的值对列表进行排序

如何根据属性值对对象列表进行排序

排序列表颤动

如何首先根据其单位(bit/s、Kbit/s 等)对特定的字典列表进行排序,然后根据它们的值对它们进行排序

根据总值对对象数组列表进行排序