dic = {'a' : 31, 'b' : 5, 'c' : 3, 'd' : 4, '33' : 56, 'd' : 0}
想把dic的value按照从大到小排序(value都是整数)。

写法如下:sorted(dic.iteritems(), key=lambda d:d[1], reverse = False )

呵呵,看了是不是觉得有点晕?没关系。慢慢来。
先看lambda函数是什么意思?
>>> f=lambda x:x+1
>>> f(2)
3
很简单了,x是参数,x+1是函数返回值。

那dic.iteritems()是什么?在sorted函数里又是怎么和lambda发生关系的呢?看我的调试代码:

>>> for i in dic:
...     print i[0], i             //i[0]第一个字符
>>> dic.iteritems()
<dictionary-itemiterator object at 0xb7ed1464>     //返回一个对象
>>> type(dic.iteritems())
<type 'dictionary-itemiterator'>         
>>> print sorted(dic.iteritems(), key=lambda a:a[0])        //dic.iteritems() 返回一个元祖
[('33', 56), ('a', 31), ('b', 5), ('c', 3), ('d', 0)]

>>> print sorted(dic.iteritems(), key=lambda a:a[1])
[('d', 0), ('c', 3), ('b', 5), ('a', 31), ('33', 56)]

>>> print sorted(dic.iteritems(), key=lambda a:a[0], reverse = False)
[('33', 56), ('a', 31), ('b', 5), ('c', 3), ('d', 0)]

dic.iteritems()   //返回一个元祖(tuple), 每个元祖包含的是一对(key,value)

key=lambda a:a[0]   //key是sorted函数的参数

//lambda a:a[0]是什么? 我们把lambda sss:sss[0]结果还是一样的,他只是前面传递过来的参数,名称是无所谓的

sorted(dic.iteritems(), key=lambda d:d[1], reverse = False )

全部的意思就是把dic.iteritems()里的元祖传进来,但是我们只要其中的value,也就是d[1] (d[0]就是key), 所以key=lambda d:d[1]就是按照value来进行排序。

如果想按照key来进行排序只要key=lambda d:d[0]就可以了, reverse = False(True) 是指是否打开反方向排序

lambda dict sort相关推荐

  1. Java List 排序 :Lambda表达式sort排序

    前言 java 1.8+ Lambda表达式sort排序 // 获取一组Book实例 List<Book> bookList = ...;// 按Book的出版日期正序排序(ASC) Li ...

  2. python lambda函数两个列表大小关系_python学习 -- operator.itemgetter(), list.sort/sorted 以及lambda函数...

    Python 中有非常方便高效的排序函数,下面主要介绍如何sort/sorted对list,dict进行排序. 1. 用list.sort /sorted 对list of tuples中第二个值进行 ...

  3. python sort 部分元素_Python 犄角旮旯--List

    列表的构建 List 是 Python 中最常用的容器之一,它是一个可变(mutable)容器,也就是说 List 的内容可以被修改,这也意味着它不能作为 Dict 的 key,也不能出现在 set ...

  4. jdk8新特性 lambda表达式详解

    本文主要讲到的内容有: 一- 前言 二- 背景 三- lambda表达式的语法 四- Lambda程序例子 4-1 Runnable Lambda 4-2 Comparator Lambda 4-3 ...

  5. Java 8 - Lambda从兴趣盎然到索然无味

    文章目录 Pre 常见的内置函数式接口 函数型接口 消费型接口 供给型接口 断言型接口 基本用法 无参 1个参数 多个参数 方法引用 引用静态方法 引用对象的方法 引用类的方法 引用构造方法 Pre ...

  6. 快用一用 lambda 表达式吧,让你的代码更简洁、更漂亮!

    目录 lambda 表达式 定义 lambda 表达式 捕获子句 按值捕获 按引用捕获 捕获特定的变量 捕获this指针 结合 lambda 使用 STL 算法 lambda 表达式 lambda 表 ...

  7. 【Java】反射、枚举、Lambda表达式

    一.反射 1 定义 2 用途(了解) 3 反射基本信息 4 反射相关的类(重要) 4.1 Class类(反射机制的起源 ) 4.1.1 Class类中的相关方法(方法的使用方法在后边的示例当中) 4. ...

  8. B00012 C++算法库的sort()函数

    这个程序介绍了sort()函数个各种用法. 源程序来自:std::sort - cppreference.com. 程序如下: #include <algorithm> #include ...

  9. 数据结构 Java数据结构 --- Lambda表达式

    文章目录 Lambda表达式 1. Lambda表达式的背景 1.1 Lambda表达式的语法 1.2 函数式接口 2. Lambda表达式的基本使用 2.1 无返回值无参数 2.2 无返回值一个参数 ...

最新文章

  1. 函数的渐近的界阶的比较
  2. TOP10全球ICT技术发展趋势
  3. 最好机器学习NLP和python教程
  4. MySQL安装、基本账户安全(5.0以后版本)
  5. matplotlib 笔记:设置x轴 y轴文字
  6. C++开发中类的定制
  7. java ant与maven_如何在maven中使用ant
  8. linux yum php环境,centos下yum搭建安装linux+apache+mysql+php环境教程
  9. flash和html5
  10. php显示网卡信息,netwox显示网络配置信息
  11. 用VC写Assembly代码(7)--在Visual C++中使用内联汇编
  12. QSettings生成以及解析配置文件
  13. 无人机怎么设定航线_无人机工地巡逻方案
  14. 【Qt串口调试助手】1.3 - 重写ComboBox下拉框的鼠标点击事件,实现点击下拉框扫描可用串口
  15. 从零基础入门Tensorflow2.0 ----八、39.2. gpu2
  16. excel使用教程_【免费】人人入手的办公软件(excel,ppt,word)——安装包/教程/模板合集...
  17. Android实战开发小米主题下载工具
  18. 手机喇叭积灰,一段音波就能清理干净
  19. 视频教程-思科CCNP专题系列②:EIGRP路由协议-思科认证
  20. 多径信道误码率理论仿真

热门文章

  1. Leetcode 109. 有序链表转换二叉搜索树 解题思路及C++实现
  2. 浪漫的html表白源代码_Love:程序猿的方式【情人节amp;520—我爱你】动画加音效 → 那些年最浪漫的表白(帮你得到你的她)...
  3. 标签页使用及bug解决
  4. 通过gps给定的两个经纬度坐标,计算两点之间的距离
  5. vue项目设置img标签的默认图片
  6. GD32F207移植FreeRtos,程序运行vTaskStartScheduler后进入HardFault_Handler死循环解决方法
  7. 按键控制LED实现启动、停止按钮
  8. 嵌入式 Jlink中flash.csv和*.jflash文件分析
  9. 对序列连续计算平均数和方差
  10. [YTU]_2718 (求最高同学位置)