【发布时间】: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)))) -
注意:您也可以简单地首先对第二个数字进行排序,然后对第一个数字进行排序(因为排序是稳定的)。