005_003 Python 根据对象的属性将对象排序
2014-04-03 22:58
513 查看
代码如下:
打印结果如下:
中国
hyj 1
abc 2
def 3
-----sort_by_attr
abc 2
def 3
hyj 1
-----sort_by_attr_inplace
abc 2
def 3
hyj 1
-----sort_by_attr2
hyj 1
abc 2
def 3
-----sort_by_attr_inplace2
hyj 1
abc 2
def 3
#encoding=utf-8 print '中国' #根据对象的属性将对象排序 def sort_by_attr(seq,attr): intermed=[(getattr(x,attr),i,x) for i,x in enumerate(seq)] intermed.sort() return [x[-1] for x in intermed] def sort_by_attr_inplace(lst,attr): lst[:]=sort_by_attr(lst,attr) #DSU内部方式 import operator def sort_by_attr2(seq,attr): return sorted(seq,key=operator.attrgetter(attr)) def sort_by_attr_inplace2(lst,attr): lst.sort(key=operator.attrgetter(attr)) class Person: def __init__(self,name,pID): self.name=name self.pID=pID def printme(self): print self.name,self.pID def printPer(lst): for per in lst: per.printme() lsta=[Person('hyj',1),Person('abc',2),Person('def',3)] printPer(lsta) print '-----sort_by_attr' lstb=sort_by_attr(lsta,'name') printPer(lstb) print '-----sort_by_attr_inplace' sort_by_attr_inplace(lsta,'name') printPer(lsta) print '-----sort_by_attr2' listb=sort_by_attr2(lsta,'pID') printPer(listb) print '-----sort_by_attr_inplace2' sort_by_attr_inplace2(lsta,'pID') printPer(lsta)
打印结果如下:
中国
hyj 1
abc 2
def 3
-----sort_by_attr
abc 2
def 3
hyj 1
-----sort_by_attr_inplace
abc 2
def 3
hyj 1
-----sort_by_attr2
hyj 1
abc 2
def 3
-----sort_by_attr_inplace2
hyj 1
abc 2
def 3
相关文章推荐
- python的short-circuit逻辑
- Django学习笔记2-Python IDE
- Python中的类中self的作用
- Python中map()函数浅析
- Python实现股票行情接收V010
- python程序设计基础6:python 图形界面程序设计
- 不安装python也正常运行编译python的程序
- Python快速学习02:基本数据类型 & 序列
- 23种设计模式之python实现--Composite模式
- 23种设计模式之python实现--Decorator模式
- 23种设计模式之python实现--Bridge模式
- python学习笔记
- Python正则-多行匹配
- Python实现股票行情接收V001
- Python Unicode与中文处理(转)
- Python WEB开发环境搭建及配置六之Django
- 简明python教程学习笔记(五)-控制流
- python socket编程
- python远程调用webservice服务
- PyDev的注释快捷键