通过多种方法对列表进行排序

weixin_38050493 2019-09-12 03:08:57

我有一个航班清单,它将在出发日期首先进行排序,然后按航班总航程排序,并根据日期保留其排序。 调用出发日期是“Flight”对象的一种方法。 调用飞行时间也是“飞行”对象的一种方法。 输出应该是: 2017年4月7日flighttime:05:00 2017年4月7日flighttime:06:00 2017年5月7日flighttime:04 :00 2017年5月7日flighttime:05:00 我想: sorted(flights, key=methodcaller('date','flighttime')) 但methodcaller只需要1个参数。我先尝试了groupby,然后在飞行时间进行排序,但是这个列表只能按飞行时间排序。 谢谢






...全文
43 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38067693 2019-09-12
  • 打赏
  • 举报
回复

methodcaller不能调用超过1点的方法,其他的参数是参数: F = methodcaller( '名', '富',酒吧= 1),调用F (二)返回b.name( '富',酒吧= 1) 因此,它可以使用methodcaller但在一个更加复杂的方式可能涉及lambda像(未经测试)lambda x : methodcaller('name')(x),methodcaller('flighttime')(x)进行 所以我会用一个简单的lambda代替(其中x是Flight对象): sorted(flights, key=lambda x : (x.date(),x.flighttime()))

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧