【问题标题】:sort my python list based on multiple values根据多个值对我的 python 列表进行排序
【发布时间】: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))))
  • 注意:您也可以简单地首先对第二个数字进行排序,然后对第一个数字进行排序(因为排序是稳定的)。

标签: python list sorting


【解决方案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)))

更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多