Python排序,针对列表,字典

      Python的内部容器,大概分为:tuple,set,list,dict,就排序来说,对列表和字典的排序需求较多,tuple主要作为不可变容器,set用来去重复,下面把list和dict常见排序方法总结一下:

     一、列表

           1、 list排序很简单,主要看list的元素组成,如果元素是由单值组成,比如下面的方法:

>>> a = [1,2,5,3,4]
>>> a.sort()
>>> print a
[1, 2, 3, 4, 5]

list本身自带sort()方法,这种方法是在list本身进行操作,也就是说改变了a的原始结构

            2、list元素是由元组组成的,要求按照元组的某一列进行排序,示例如下:

>>> a=[('c',1),('b',2),('a',3)]
>>> b=sorted(a,key = lambda ss:ss[0])
>>> b
[('a', 3), ('b', 2), ('c', 1)]
>>> a
[('c', 1), ('b', 2), ('a', 3)]
>>> 
采用Python的内建函数sorted(),这种很明显是把排序结果放到了b列表中,但是实际上并不会改变a数据的原始结构,如果我们依然采用列表的sort()方法呢?示例如下:

>>> a
[('c', 1), ('b', 2), ('a', 3)]
>>> a.sort(key = lambda x:x[0])
>>> a
[('a', 3), ('b', 2), ('c', 1)]
>>> 
 还有一个方法不过使用cmp参数:

>>> c=sorted(a,cmp = lambda x,y:cmp(x[1],y[1]),reverse = 0)
>>> c
[('c', 1), ('b', 2), ('a', 3)]
>>> 

cmp是比较,X[1],y[1]表示第一和第二个元素的第二列,reverse=0表示不进行反转,可以reverse=False,两者一样效果,当然reverse不写也可以,默认为False

             3、使用operator模块

>>> a
[('c', 1), ('b', 2), ('a', 3)]
>>> b = sorted(a,key=itemgetter(0))
>>> b
[('a', 3), ('b', 2), ('c', 1)]

二、字典排序

      字典的话,主要是按照键或值来排序

>>> b
[('a', 3), ('b', 2), ('c', 1)]
>>> dic = {'a':3,'b':2,'c':1}
>>> sorted(dic.iteritems(),key = lambda aa:aa[1],reverse=False)
[('c', 1), ('b', 2), ('a', 3)]
>>> 
      还有的方法是直接用for循环来做,但我觉得直接sorted()已经很清晰了。

总结:

      一般做排序,list来说可以根据是否要改变原始数据结构来选择不同的方法,字典就用sorted即可,关于效率,其实我个人感觉用lambda的key方法较快。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值