Python 中有非常方便高效的排序函数,下面主要介绍如何sort/sorted对list,dict进行排序。

1. 用list.sort /sorted 对list of tuples中第二个值进行排序

>>> import operator
>>> a=[('a',3),('b',2),('c',1)]
>>> import operator
>>> l=[('a',3),('b',2),('c',1)]
>>> l.sort(key=operator.itemgetter(1))
>>> l
[('c', 1), ('b', 2), ('a', 3)]
>>> sorted(l, key=operator.itemgetter(1))
[('c', 1), ('b', 2), ('a', 3)]
>>> sorted(l, key=operator.itemgetter(0))
[('a', 3), ('b', 2), ('c', 1)]

  list.sort 和sorted 的区别:sort是list序列的一个方法,而sorted是内建函数

  list.sort: 没有返回值,而且 sort作为序列的内部函数,调用完后会对调用的序列进行排序

  sorted:函数不改变参数,并返回排好序的序列副本

  在python开发文档中对sort和sorted都有详细介绍,也可以调用help函数来查看两者的区别

>>> help(list.sort)
Help on method_descriptor: sort(...)
L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
>>> help(sorted)
Help on built-in function sorted in module builtins: sorted(iterable, /, *, key=None, reverse=False)
Return a new list containing all items from the iterable in ascending order. A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.

2. 除了用operator之外我们也可以用lambda

>>> l.sort(key=lambda x:x[1])
>>> l
[('c', 1), ('b', 2), ('a', 3)]

3. 用sorted来对ditionary进行排序

>>> l = {'a': 3,"b": 2,"c": 1}
>>> sl_key = sorted(l.items()) #Sort by key
>>> sl_key
[('a', 3), ('b', 2), ('c', 1)]
>>> sl_value = sorted(l.items(),key=lambda x:x[1]) #Sort by value
>>> sl_value
[('c', 1), ('b', 2), ('a', 3)]
>>> sl_value = sorted(l.items(),key=lambda x:x[1],
reverse=True) #Sort by value Backwards
>>> sl_value
[('a', 3), ('b', 2), ('c', 1)]
>>> sl_value = sorted(l.items(),key=lambda x:(x[1],x[0]),
reverse=True) #Sort by value then by Key
>>> sl_value
[('a', 3), ('b', 2), ('c', 1)]

  

python学习 -- operator.itemgetter(), list.sort/sorted 以及lambda函数的更多相关文章

  1. Python的operator.itemgetter函数和sorted函数

    写这篇文章的目的是之前在<机器学习实战>用Python3实现KNN算法时用到的几个函数不太懂, 地址: 1- https://github.com/hitergelei/Self-Lear ...

  2. python之map、filter、reduce、lambda函数 转

    python之map.filter.reduce.lambda函数  转  http://www.cnblogs.com/kaituorensheng/p/5300340.html 阅读目录 map ...

  3. python的operator.itemgetter('click')用于定义获取'click'项的函数

    python的排序参见文章http://blog.csdn.net/longshenlmj/article/details/12747195 这里介绍 import operator模块 operat ...

  4. python中operator.itemgetter函数

    operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子. k = [,,] b = ) print(b(k)) #输 ...

  5. Python学习笔记(八)sorted

    摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431823058 ...

  6. python中operator.itemgetter

    直接上例子: rs=  [...     {...       "datetime": "Mon, 31 Aug 2015 23:00:00 GMT",...  ...

  7. python学习笔记1 -- 函数式编程之高阶函数 sorted排序

    python提供了很强大的内置排序函数,妈妈再也不担心我不会写冒泡排序了呀,sorted函数就是这个排序函数,该函数参数准确的说有四个,sorted(参数1,参数2,参数3,参数4). 参数1 是需要 ...

  8. Python学习笔记之map、zip和filter函数

    这篇文章主要介绍 Python 中几个常用的内置函数,用好这几个函数可以让自己的代码更加 Pythonnic 哦 1.map map() 将函数 func 作用于序列 seq 的每一个元素,并返回处理 ...

  9. Python的函数式编程: map, reduce, sorted, filter, lambda

    Python的函数式编程 摘录: Python对函数式编程提供部分支持.由于Python允许使用变量,因此,Python不是纯函数式编程语言. 函数是Python内建支持的一种封装,我们通过把大段代码 ...

随机推荐

  1. SPC空投火爆来袭!区块链技术落地加速!

    经历市场狂热后,区块链逐渐恢复合理性,在政策红利.技术等多力推进下,各行各业开始涌入区块链行业.在这波浪潮中,SPC侧链代币项目显得格外亮眼,其空投已经发放至第二轮,仅SPC空投月收益就达23%左右, ...

  2. Word带数学公式发布博客

    Word公式编辑器无法直接上传博客,一个一个的转换LaTeX还要加$,十分麻烦. 下面是我昨天摸索出来的办法.作为博客新人,这个问题困扰我一晚上,能解决我也是非常高兴的. 如果各位前辈有好方法的话,请 ...

  3. Matplotlib 图表绘制工具学习笔记

    import numpy as np import matplotlib.pyplot as plt import pandas as pd arr1 = np.random.rand(10)#一维数 ...

  4. C# NOPI 项目实战(经典)(可下载项目源码)

    1 -.首先说明下项目目的: 之前我有写过一篇  "NPOI操作EXCEL" 这篇文章主要介绍了如何安装NPOI,以及NPOI具体如何使用,并且用具体实例介绍了excel导入到da ...

  5. 修改vs模板抬头\Common7\IDE\ItemTemplates\CSharp\Code\2052\Class

    //************************************************************************************************** ...

  6. 图文详解:Kafka到底有哪些秘密让我对它情有独钟呢?

  7. Socket实现简单聊天

    服务端: package main.java.com.socket_dome; import java.io.IOException; import java.io.InputStream; impo ...

  8. Centos7.7下安装Python3.7 并兼容python2.7

    前言 1.首先来看一下系统版本 [root@python3 ~]# cat /etc/redhat-release CentOS Linux release 7.7.1810 (Core) 2.更新一 ...

  9. C#扩展方法的一分钟小例子

    扩展方法是静态方法,是类的一部分,但没有在类的源代码中,就像一个补丁 首先创建一个静态类,然后创建一个静态方法,重点是静态方法的参数 public static class xExtension { ...

  10. 设计模式系列之原型模式(Prototype Pattern)——对象的克隆

    说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...