[Python]sort与sorted高级技巧

与其他语言不同,python 3.0之后,弃用了其他语言中常见的cmp方法,在sort方法中改用key实现。

之前一直疑惑自定义对象的排序如何写comparator,最后发现还是通过内部的__cmp__方法来实现。

挖坑

http://www.cnblogs.com/nju2014/p/5569983.html

对这个sort方法还是有点烦, 当key相等时,排序的结果不稳定。

如要对A = [a, b, c, d] 和B = [b, a, c ,d] 进行排序,存在这样的dict V = {a:4, b:4, c:1, d:1}

当调用sorted(A, key=lambda x:V[x], reverse=True)时,返回的结果可能是[a, b , c ,d], 也有可能是[b, a, c, d]

原文地址:https://www.cnblogs.com/oDoraemon/p/9453862.html

时间: 2024-09-29 15:42:17

[Python]sort与sorted高级技巧的相关文章

【转载】 python sort、sorted高级排序技巧

这篇文章主要介绍了python sort.sorted高级排序技巧,本文讲解了基础排序.升序和降序.排序的稳定性和复杂排序.cmp函数排序法等内容,需要的朋友可以参考下 Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1. 排序基础 简单的升序排序是非常容易的.只需要调用sorted()方法.它返回一个新的list,新的list的元素基于小于运算符(lt)来排序. >>> sorted([5, 2,

python sort、sorted高级排序技巧

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorted()方法.它返回一个新的list,新的list的元素基于小于运算符(__lt__)来排序. 复制代码 代码如下: >>> sorted([5, 2, 3, 1, 4]) [1, 2, 3, 4, 5] 你也可以使用list.sort()方法来排序,此时list本身将被修改.通常此方法不如s

python sort、sorted、reverse、reverd的区别

sort.sorted.reverse.reversed的区别 !!! error 首先应该区分的是,sort和reverse是列表的一个方法.字符串.元组.字典.集合是没有这两个方法的.而sorted和reversed是python的两个内置函数,并且只有字符串.列表.元组,可以当做参数传入,字典和集合不支持,得到的是一个生成器对象 !!! sort与sorted() sort 只有列表有该方法,直接对原来的列表进行排序,不会产生新列表 l1 = [12,2,34,54,5,17] l1.so

python sort和sorted

转自 https://www.jianshu.com/p/419a8732ac62 一.函数sort() sort() :仅对list对象进行排序,会改变list自身的顺序,没有返回值,即原地排序: list.sort(key=None, reverse=False) key :设置排序方法,或指定list中用于排序的元素: reverse :升降序排列,默认为升序排列: 一维元素组成的list排序:忽略参数key >>> a = ['TaoBao', 'Google', 'BaiDu'

python sort、sorted

1. (1).sorted()方法返回一个新列表(默认升序). list.sort() (2).另一个不同:list.sort()方法仅被定义在list中,sorted()方法对所有的可迭代序列都有效. 2.key参数/函数 从python2.4开始,在list.sort()和sorted()增加了key参数,key在每个元素比较浅被调用. 例如:通过key指定的函数来忽略字符串大小写: 通过复杂对象的某些值来对复杂对象的序列进行排序: 对拥有命名属性的复杂对象进行排序: 3.Operator模

python sort()和sorted()方法

直接上代码: list_a=['a','c','z','E','T','C','b','A','Good','Tack'] list_b=['a','c','z','E','T','C','b','A','Good','Tack'] list_a.sort() print list_a==sorted(list_b)>>>True list_a.sort(), 把list_a原地排序,没有返回值,而是把当前序列变得有序,所以list_a已经完成了排序 sorted(list_b),是内建

【python】 sort、sorted高级排序技巧

这篇文章主要介绍了Python中列表(List)的详解操作方法,包含创建.访问.更新.删除.其它操作等,需要的朋友可以参考下 Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorted()方法.它返回一个新的list,新的list的元素基于小于运算符(__lt__)来排序. >>> sorted([5, 2, 3, 1, 4]) [1, 2, 3

python函数之sorted与sort

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. sorted(iterable,key=None,reverse=False),返回新的列表,对所有可迭代的对象均有效 sort(key=None,reverse=False) 就地改变列表  reverse:True反序:False 正序 实例: >>>sorted([1,5,3,2,9]) [1,2,3,5,9] >>>a=[5,

Python: sort,sorted,OrderedDict的用法

Python: sort,sorted,OrderedDict的用法 from http://stqdd.com/archives/427 by 莫亚菜 python对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函数. sort函数和sorted函数唯一的不同是,sort是在容器内排序,sorted生成一个新的排好序的容器. 对于一个简单的数组 L=[5,2,3,1,4]. sort: L.sort() sorted(...)    sorted(iterabl