Python3对一个class类型的list按class中某一属性排序

写作业的时候需要对一个point(x,y)类型的list按照point的x坐标从小到大排序,于是去网上找了,但是并没有找到如题的回答(其实有一个意思的回答但是我认为不是这个意思就没注意看),然后就去找了屌屌的同学问这个玩意,然后我同学就甩给我了一个
def comp(self, a, b): 
if a.start>b.start:return 1 
elif a.start==b.start:return 0 
else : return -1 
intervals.sort(self.comp) 

这样的东西,看起来很靠谱啊,嗯!就这么弄,so easy!然后我在python3上面写着python2,一样的用法,一直报错,你这个comp必须要有两个参数啊,你自己写的代码你不知道带参数?报错报错。

就这个东西,想了我一个上午,我认为我写的超级对啊,没问题啊,为什么,python针对我,

然后就一直上网搜啊,突然!!!

l.sort(key=lambda t:t.x)
这玩意怎么看着???,这啥意思,我曹!!!我这python3啊,然后
例子3
默认sorted([True, False])==[False, True] (False=0 < True=1)
一个字符串排序,排序规则:小写<大写<奇数<偶数
#元组内(e1, e2, e3)的优先级排列为: e1 > e2 > e3
sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x) % 2 == 0,x.isupper(),x)
#input: 'asdf234GDSdsf23'
#output: 'addffssDGS33224'
1
2
3
4
5
x.isdigit()的作用是把数字放在后边(True),字母放在前面(False).
x.isdigit() and int(x) % 2 == 0的作用是保证数字中奇数在前(False),偶数在后(True)。
x.isupper()的作用是在前面基础上,保证字母小写(False)在前大写在后(True).
最后的x表示在前面基础上,对所有类别数字或字母排序。

社会社会

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值