python----积累---python对象排序的方法收集
需要针对对象序列进行排序的,尤其是针对对象的某个属性排序的场景最为常见。
直接调用序列的sort方法
class Person(object):
def __init__(self,age,name):
self.age = age
self.name = name
def personSort():
persons = [Person(age,name) for (age,name) in [(12,"lili"),(18,"lulu"),(16,"kaka"),(12,"xixi")]]
persons.sort(cmp=None,key=lambda x:x.age,reverse=False)
for element in persons:
print element.age,":",element.name
person对象里两个字段,一个age,一个name。排序的时候按照age来进行。
使用operator
def operatorSort():
persons = [Person(age,name) for (age,name) in [(12,"lili"),(18,"lulu"),(16,"kaka"),(12,"xixi")]]
try:
import operator
except ImportError:
cmpfun = lambda x:x.age
else:
cmpfun = operator.attrgetter("age","name")
persons.sort(key = cmpfun, reverse=False)
for element in persons:
print element.age,":",element.name
sorted
字典:
将phonebook的电话号按数字大小排序
>>> phonebook = {'Linda':'7750','Bob':'9345','Carol':'5834'}
>>> from operator import itemgetter
>>> sorted_pb = sorted(phonebook.iteritems(),key=itemgetter(1))
>>> sorted_pb
[('Carol', '5834'), ('Linda', '7750'), ('Bob', '9345')]
多维list:
对成绩、等级多字段排序
>>> from operator import itemgetter
>>> gameresult = [['Bob',95.00,'A'],['Alan',86.0,'C'],['Mandy',82.5,'A'],['Rob',86,'E']]
>>> sorted(gameresult, key=itemgetter(2, 1))
[['Mandy', 82.5, 'A'], ['Bob', 95.0, 'A'], ['Alan', 86.0, 'C'], ['Rob', 86, 'E']]
字典中混合list:
>>> mydict = {'Li':['M',7],
... 'Zhang': ['E',2],
... 'Wang':['p',3],
... 'Du':['C',2]}
>>> from operator import itemgetter
>>> sorted(mydict.iteritems(),key=lambda(k,v):operator.itemgetter(1)(v))
[('Zhang', ['E', 2]), ('Du', ['C', 2]), ('Wang', ['p', 3]), ('Li', ['M', 7])]
List中混合字典:
对多个key值rating和name排序
>>> gameresult = [{"name":"Bob","wins":10,"losses":3,"rating":75.00},
... {"name":"David","wins":3,"loses":5,"rating":57.00}]
>>> from operator import itemgetter
>>> sorted(gameresult,key=itemgetter("rating","name"))
[{'wins': 3, 'rating': 57.0, 'name': 'David', 'loses': 5}, {'wins': 10, 'losses': 3, 'name': 'Bob', 'rating': 75.0}]
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhibhjcc
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22