按日期排序对象列表,其中对象没有名称

Posted

技术标签:

【中文标题】按日期排序对象列表,其中对象没有名称【英文标题】:Sort list of objects by date, where objects don't have name 【发布时间】:2020-01-29 14:05:19 【问题描述】:

我正在尝试加入两个查询集并按日期对最终列表进行排序。查询集没有名称的东西。所以我不太确定如何用 lambda 引用它们。

ur_dates =list(unavailable_rooms_prices.values('checkin','checkout').distinct().order_by('checkin'))
ar_dates=list(available_rooms_prices.values('checkin','checkout').distinct().order_by('checkin'))

if ur_dates is not None:
    ar_dates.extend(ur_dates)


sorted_list = ar_dates.sort(key=lambda r: r.checkin)

这是我尝试这样做的方式,但我收到错误消息说 dict 对象没有属性“checkin”。

据我了解,应该是 Foo.checkin。但在这种情况下,我的 foo 是什么?

我觉得周一早上让我的脑海里浮现了一层迷雾。

谢谢!

【问题讨论】:

【参考方案1】:

试试:

sorted_list = sorted(ar_dates, key=lambda r: r['checkin'])
#or
ar_dates.sort(key=lambda r: r['checkin']) #sort is inplace

【讨论】:

【参考方案2】:

当您使用.values() 时,生成的查询集包含dicts,而不是模型实例。因此,您必须使用r['checkin'] 而不是r.checkin

sorted_list = ar_dates.sort(key=lambda r: r['checkin'])

供参考,这里是documentation of .values()的链接

【讨论】:

谢谢你的解释,我认为它必须与'.values()'做一些事情

以上是关于按日期排序对象列表,其中对象没有名称的主要内容,如果未能解决你的问题,请参考以下文章

如何以字符串格式按日期对对象列表进行排序?

Java按日期升序排序列表对象[重复]

在 C# 中对对象列表进行排序

如何从按对象创建日期排序的核心数据中获取结果?

按对象属性之一的值对对象列表进行排序,其中只有一个值是感兴趣的

gsutil / gcloud 存储文件列表排序日期降序?