List:
我们需要对List L进行排序,Python提供了两个方法
方法1.用List的成员函数sort进行排序
>>> a=[1,3,4,2,5]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5]
Sort方法可加参数如下:
>>> help(list.sort)
Help on method_descriptor:
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1
cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;可用lambda表达式。
key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;可用lambda表达式。
reverse:排序规则. reverse = True为降序 或者 reverse = False为升序,有默认值。
方法2.用built-in函数sorted进行排序
>>> a=[1,3,4,2,5]
>>> b=sorted(a)
>>> b
[1, 2, 3, 4, 5]
sorted方法可加参数如下:
>>> help(sorted)
Help on built-in function sorted in module __builtin__:
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
iterable:是可迭代类型;
cmp:同上;
key:同上;
reverse:同上;
返回值:是一个经过排序的可迭代类型,与iterable一样。
对比:sort为在原List进行排序,sorted产生新的排好序的List。
Dict:
同理,对于Dict等可迭代类型,在iterable位置需要传入dicta.iteritems(),在需要对比的数据则要放到key位置,key=operator.itemgetter(1)。
operator.itemgetter生成一个获取对象某维数据的函数,如:声明Dict d
>>> d={}
>>> d[1]=4
>>> d[2]=5
>>> d[3]=6
>>> d
{1: 4, 2: 5, 3: 6}
>>> it=operator.itemgetter(1) #获取第一个域的值
>>> it(d)
4
>>> it=operator.itemgetter(2,1) #获取第二个和第一个域的值
>>> it(d)
(5, 4)
做个完整的测试:
>>> d={}
>>> d[1]=6
>>> d[2]=5
>>> d[3]=4
>>> sortedd = sorted(d.iteritems(), key=operator.itemgetter(1), reverse=True)
>>> sortedd
[(1, 6), (2, 5), (3, 4)]
上面代码取得了每个Dict的值,进行降序排列。
参考:
http://blog.csdn.net/dongtingzhizi/article/details/12068205
http://www.cnblogs.com/65702708/archive/2010/09/14/1826362.html