通过多种方法对列表进行排序
我有一个航班清单,它将在出发日期首先进行排序,然后按航班总航程排序,并根据日期保留其排序。通过多种方法对列表进行排序
- 调用出发日期是“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,然后在飞行时间进行排序,但是这个列表只能按飞行时间排序。
谢谢
回答:
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()))
以上是 通过多种方法对列表进行排序 的全部内容, 来源链接: utcz.com/qa/266139.html