python 按照对象某一属性排序

前言:

工作中经常需要用到排序,单纯的数字排序还好说,但是有时候要按照对象的某一属性对对象进行排序,这时候会稍微麻烦点,不过 python 中有现成的方法解决这种窘境。

1.调用 list 排序方法

不 bb,直接上代码,总共三个例子
1.普通列表
2.复杂列表
3.对象排序

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

if __name__ == '__main__':
    a = (0, 8, 2, 6, 3)
    b = [('a', 12), ('b', 12), ('c', 1), ('d', 13), ('e', 2)]
    person_list = [Person('q', 2), Person('w', 1), Person('e', 3), Person('r', 6)]
    a.sort(cmp=None, key=None, reverse=True)   # reverse 参数为 True 时逆向排序
    print a
    b.sort(key=lambda x: x[1])
    print b
    person_list.sort(key=lambda x: x.age)
    for i in person_list:
        print i.age

结果:

[8, 6, 3, 2, 0]
[('c', 1), ('e', 2), ('a', 12), ('b', 12), ('d', 13)]
1
2
3
6
2.调用 sorted 方法

和上面一样的例子,其实 sorted 方法和 list.sort 使用方法几乎一样

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age


if __name__ == '__main__':
    a = [0, 8, 2, 6, 3]
    b = [('a', 12), ('b', 12), ('c', 1), ('d', 13), ('e', 2)]
    person_list = [Person('q', 2), Person('w', 1), Person('e', 3), Person('r', 6)]
    print sorted(a)
    print sorted(b, key=lambda x: x[1])
    m = sorted(person_list, key=lambda x: x.age, reverse=True)
    for i in m:
        print i.age

结果:

[0, 2, 3, 6, 8]
[('c', 1), ('e', 2), ('a', 12), ('b', 12), ('d', 13)]
6
3
2
1
3.结语

非常复杂的排序就需要自己写了,一般上面那个方法用一下就基本满足需求了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值