怎样让Python根据对象的某一元素进行排序?

本文详细介绍了如何使用Python的sort函数和lambda表达式,根据对象的特定属性进行排序,并展示了如何通过__str__函数实现对象默认字符串表示。通过实例代码演示了Person类对象按姓名排序的过程。
摘要由CSDN通过智能技术生成

怎样让Python根据对象的某一元素进行排序?

思路

以前我们对一系列元素排序以升序或者降序时,可以创建一个列表,然后使用自带的sort函数解决升序倒序问题,那么现在,如果要对象的某个元素值进行排序?该怎样获取它的属性然后对属性进行排序呢?其实方法很简单。python自带的sort函数有一个key值可以让他按照key的指定方法去排序,譬如:sort(key=len)。这时您就可以看到列表以元素的长度进行了排序,对象也是如此,获取属性可以使用lambda函数

解决代码

pai.sort(key = lambda a: a.name)

在这里,a代表对象的属性值

完整方案

额外补充:__str__函数的作用:
访问对象默认返回的参数

class Person:
    def __init__(self,name,city):
        self.name = name
        self.city = city
    def __str__(self):
        return str(self.city)
    def moveto(self,newcity):
        self.city = newcity
a = Person('老王','荆州')
b = Person('老李','郑州')
c = Person('老刘','广州')
d = Person('老周','福州')
pai = [a,b,c,d]
print('Before:')
for i in pai:
    print('姓名:'+i.name+' '+'城市:'+i.city)
pai.sort(key = lambda a: a.name)
print('After:')
for i in pai:
    print('姓名:'+i.name+' '+'城市:'+i.city)
a.moveto('郑州')
print(a.name+'搬去了'+a.city)

有错误的话恳请各位指正,谢谢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值