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, 1cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;可用lambda表达式。
>>> 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 listiterable:是可迭代类型;
对比: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