思路
以前我们对一系列元素排序以升序或者降序时,可以创建一个列表,然后使用自带的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)
有错误的话恳请各位指正,谢谢!