python - 根据键对python列表进行排序

标签 python sorting key

我在 python 列表中有一些条目。每个条目都有一个创建日期和创建时间。这些值存储为 python datetime.date 和 datetime.time(作为两个单独的字段)。我需要获取条目列表已排序,以便先前创建的条目排在其他条目之前。

我知道有一个接受键函数的 list.sort() 函数。在这种情况下,我是否必须使用日期和时间来创建日期时间并将其用作 sort()< 的键?为此有一个 datetime.datetime.combine(date,time)。但是我如何在排序函数中指定它呢?

我试过 key = datetime.datetim.combine(created_date,created_time)

但是解释器提示说 name created_date is not defined

class Entry: 
   created_date = #datetime.date
   created_time  = #datetime.time
   ...

my_entries_list=[Entry1,Entry2...Entry10]
my_entries_list.sort(key = datetime.datetim.combine(created_date,created_time))

最佳答案

你可能想要这样的东西:

my_entries_list.sort(key=lambda v:
                           datetime.datetime.combine(v.created_date, v.created_time))

传递 datetime.datetime.combine(created_date, created_time) 尝试立即调用 combine 并在 created_datecreated_time 不可用作局部变量。 lambda 提供了延迟计算:它不是立即执行代码,而是创建一个函数,该函数将在调用时执行指定的代码并返回结果。该函数还提供将用于访问 created_datecreated_time 属性的参数。

关于python - 根据键对python列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14198382/

相关文章:

python - 无法将 Python 3 Flask 应用程序推送到 Heroku

python - 客户购买/收听行为的 "similar products/music/..."统计计算是如何工作的?

arrays - 返回输入数组的前 K 个元素

php - 如何在php中按键降序对数组进行排序?

Python 和最多 21 个字符的随机键

Python - 矩阵索引错误异常不起作用

python - 如何从 Selenium IDE 创建一个有效的 Selenium WebDriver python 脚本?

java - 对任何类型的对象进行排序,java

java - 字符串数组中的错误 indexOf

java - 如何删除磁盘上的 Redis 键?