Python排序,针对列表,字典
来源:互联网 发布:unity5.5.1f1 for mac 编辑:程序博客网 时间:2024/05/16 15:22
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方法较快。
0 0
- Python排序,针对列表,字典
- Python字典、列表排序
- Python中 字典排序、列表排序
- Python中 字典排序、列表排序
- Python中 字典排序、列表排序
- Python中 字典排序、列表排序
- PYTHON 对列表|字典|列表中多个字典排序
- Python 字典 列表 嵌套 复杂排序大全
- python字典和列表各种嵌套排序
- python中列表和字典排序
- python 字典列表 列表字典
- Python字典按值排序、包含字典的列表按字典值排序的方法
- Python字典按值排序、包含字典的列表按字典值排序的方法
- Python字典按值排序、包含字典的列表按字典值排序的方法
- Python字典按值排序、包含字典的列表按字典值排序的方法
- Python字典按值排序、包含字典的列表按字典值排序的方法
- Python字典按值排序、包含字典的列表按字典值排序的方法
- Python字典按值排序、包含字典的列表按字典值排序的方法
- android缓存框架ASimpleCache
- 最新Androstudio导入第三方库
- 面试总结10
- 28. Element nodeValue 属性
- svn cleanup failed–previous operation has not finished 解决方法
- Python排序,针对列表,字典
- Map集合
- 1049:Climbing Worm
- 分解字符串
- js中如何将GBK的英文转为普通英文, 全角转为半角
- define和inline关键字比较
- 29. Element ownerDocument 属性
- iOS Layer层相关,图片裁剪与形变
- bfs(广搜)