python sorted用法

来源:互联网 发布:单片机输入的是什么 编辑:程序博客网 时间:2024/06/05 23:29
sorted()函数功能非常强大,使用它可以方便地针对不同的数据结构进行排序,从而满足不同需求。来看下列例子。


·对字典进行排序:下面的例子中根据字典的值进行排序,即将phonebook对应的电话号码按照数字大小进行排序。


>>> phonebook = {'Linda': '7750', 'Bob': '9345', 'Carol': '5834'}
>>> from operator import itemgetter
>>> sorted_pb = sorted(phonebook.iteritems(),key=itemgetter(1))
>>> print sorted_pb
[('Carol', '5834'), ('Linda', '7750'), ('Bob', '9345')]
>>>
·多维list排序:实际情况下也会碰到需要对多个字段进行排序的情况,如根据学生的成绩、对应的等级依次排序。当然这在DB里面用SQL语句很容易做到,但使用多维列表联合sorted()函数也可以轻易达到类似的效果。


>>> from operator import itemgetter
>>> gameresult = [['Bob',95.00,'A'],['Alan',86.0,'C'],['Mandy',82.5,'A'],['Rob',
86,'E']] #
分别表示学生的姓名,成绩,等级
>>> sorted(gameresult , key=operator.itemgetter(2, 1))
[['Mandy', 82.5, 'A'], ['Bob', 95.0, 'A'], ['Alan', 86.0, 'C'], ['Rob', 86, 
        'E'] #
当第二个字段成绩相同的时候按照等级从低到高排序
]
·字典中混合list排序:如果字典中的key或者值为列表,需要对列表中的某一个位置的元素排序也是可以做到的。下面的例子中针对字典mydict的value结构[n,m]中的n按照从小到大的顺序排列。


>>> mydict = { 'Li': ['M',7],
...            'Zhang': ['E',2],
...            'Wang': ['P',3],
...            'Du': ['C',2],
...            'Ma': ['C',9],
...            'Zhe': ['H',7] }
>>>
>>> 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]), ('
Zhe', ['H', 7]), ('Ma', ['C', 9])]
·List中混合字典排序:如果列表中的每一个元素为字典形式,需要针对字典的多个key值进行排序也不难实现。下面的例子是针对list中的字典元素按照rating和name进行排序的实现方法。


>>> gameresult = [{ "name":"Bob", "wins":10, "losses":3, "rating":75.00 },
...             { "name":"David", "wins":3, "losses":5, "rating":57.00 },
...             { "name":"Carol", "wins":4, "losses":5, "rating":57.00 },
...             { "name":"Patty", "wins":9, "losses":3, "rating": 71.48 }]
>>> from operator import itemgetter
>>> sorted(gameresult , key=operator.itemgetter("rating","name"))
[{'wins': 4, 'losses': 5, 'name': 'Carol', 'rating': 57.0}, {'wins': 3, 'losses'
: 5, 'name': 'David', 'rating': 57.0}, {'wins': 9, 'losses': 3, 'name': 'Patty',
 'rating': 71.48}, {'wins': 10, 'losses': 3, 'name': 'Bob', 'rating': 75.0}]
>>>
0 0
原创粉丝点击