根据多个值对我的 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 列表进行排序的主要内容,如果未能解决你的问题,请参考以下文章