Python 按值排序的列表的最近日期
我有一个大致如下的列表:Python 按值排序的列表的最近日期,python,Python,我有一个大致如下的列表: mylist=[[20200101]、[20200108]、[20200101]、[12000110]、[12000101]] 它是一个列表列表,每个列表的第一个元素是值,第二个元素是日期。我想选择第一个值最高的列表(本例中为2),然后是最近的日期(本例中为20200108-2020年1月8日) 我知道您可以将lambda函数传递给内置的max()函数,如下所示,但我不确定如何处理先选择值的最大值,然后选择日期的最大值 max(mylist,key=lambda x:
mylist=[[20200101]、[20200108]、[20200101]、[12000110]、[12000101]]
它是一个列表列表,每个列表的第一个元素是值,第二个元素是日期。我想选择第一个值最高的列表(本例中为2),然后是最近的日期(本例中为20200108-2020年1月8日)
我知道您可以将lambda函数传递给内置的max()
函数,如下所示,但我不确定如何处理先选择值的最大值,然后选择日期的最大值
max(mylist,key=lambda x:x[0])
默认的max
在可分级排序中从第一个索引一直工作到最后一个索引
mylist = [[2, 20200101], [2, 20200108], [2, 20200101], [1, 20200110], [1, 20200101]]
max(mylist)
或
你可以传两把钥匙
mylist = [[2, 20200101], [2, 20200108], [2, 20200101], [1, 20200110], [1, 20200101]]
max(mylist, key=lambda x: (x[0], x[1]))
在Python中,列表默认情况下按字典进行比较。这意味着比较第一个元素,然后比较下一个元素,依此类推,这正是您想要的。(作为旁注,较短的列表将小于较长的列表)因此,无需按键即可
max
:
max(mylist)
列表的默认比较已经按照您想要的方式工作了。您是否尝试过使用max(mylist)
?谢谢,在尝试生成一个最小的示例时,我实际上过于简化了我的示例。在我的实际问题中,每个项都是一个具有obj.value
和obj.date
的对象,因此我需要能够像第二个示例中那样指定键。谢谢