2018-01-03@望京

排序,立即想到用Python的内置函数sorted()

Python 2.x 中

sorted(...)

sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

Python 3.x 中

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 customise the sort order, and the

reverse flag can be set to request the result in descending order.

字典按key排序

>>> dic = {'a':9, 'c':3, 'f':12, 'b':1, 'd':7}

>>>

>>> sorted(dic)

['a', 'b', 'c', 'd', 'f']

>>>

>>> sorted(dic.keys())

['a', 'b', 'c', 'd', 'f']

>>>

>>> sorted(dic.values())

[1, 3, 7, 9, 12]

>>>

>>> sorted(dic.items())

[('a', 9), ('b', 1), ('c', 3), ('d', 7), ('f', 12)]

>>>

>>> for k in sorted(dic):

... print dic[k]

...

9

1

3

7

12

>>>

字典是无序的,对字典排序本身是一个没有太大意义的事,但是面试的时候总会遇到==''

那么问题来了,如何对字典按照value排序呢(默认是对key进行排序)?

首先需要知道sorted()这个函数的几个参数的意思(按照Python 3.x来说明):

- iterable   指的是可迭代对象,可以是dic,dic.items(), dic.keys(),  dic.values() 等等;

- key         key对应一个函数,用来选取参与比较的元素;

- reverse   排序规则. reverse = True 或者 reverse = False(默认值);

Py2中使用sort的cmp参数自定义排序方式

>>>

>>> res = [{'name':'hi','age':10},{'name':None,'age':10},{'name':'bo','age':10},{'name':'aaa','age':10}]

>>>

>>> res.sort(cmp=lambda x, y: cmp(x['name'], y['name']))

>>>

>>> res

[{'age': 10, 'name': None}, {'age': 10, 'name': 'aaa'}, {'age': 10, 'name': 'bo'}, {'age': 10, 'name': 'hi'}]

>>>

使用key参数来实现

items()方法将字典的元素 转化为了元组

>>> dic

{'a': 9, 'c': 3, 'b': 1, 'd': 7, 'f': 12}

>>> dic.items()

[('a', 9), ('c', 3), ('b', 1), ('d', 7), ('f', 12)]

>>>

>>> sorted(dic.items())

[('a', 9), ('b', 1), ('c', 3), ('d', 7), ('f', 12)]

>>>

>>> sorted(dic.items(), key=lambda x:x[1])

[('b', 1), ('c', 3), ('d', 7), ('a', 9), ('f', 12)]

>>>

使用zip来实现

>>> dic

{'a': 9, 'c': 3, 'b': 1, 'd': 7, 'f': 12}

>>>

>>> new_dic = zip(dic.values(), dic.keys())

>>>

>>> new_dic

[(9, 'a'), (3, 'c'), (1, 'b'), (7, 'd'), (12, 'f')]

>>>

>>> sorted(new_dic)

[(1, 'b'), (3, 'c'), (7, 'd'), (9, 'a'), (12, 'f')]

>>>

字典排序什么意思_字典排序问题相关推荐

  1. php字符串字典排序,javascript实现PHP字典排序ksort

    /** * javascript实现PHP字典排序 * @param {Object} vm 当前this * @param {Array} inputArr 规定要进行排序的数组 * @param ...

  2. 字典排序什么意思_字典序排序

    查字典时,比如查单词 Love ,我们是从第一个字母L,开始查找,在A~Z开头中的单词中,不管是实际操作的二分查找还是别的方式查找,总能找到L打头的单词所在的位置范围,然后又在这个范围内开始查找O字母 ...

  3. 字典排序什么意思_列表及字典的排序

    一.列表嵌套元组的排序 1.列表的内置方法s.sort() sort(...) L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN ...

  4. python字典排序并输出_对Python的字典进行排序

    我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value ...

  5. python列表按照指定顺序排序-python列表排序、字典排序、列表中字典排序

    手记 -- encoding=utf-8 -- python3代码 import operator 一. 按字典值排序(默认为升序) x = {1:2, 3:4, 4:3, 2:1, 0:0} sor ...

  6. java单词按字典排序_最终Java日志字典:开发人员最常记录的单词是什么?

    java单词按字典排序 最终的记录字典,或者:我们记录的最常见单词是什么? 日志文件是调试应用程序的最常用方法,当解决错误时,它们肯定可以引导我们朝正确的方向发展. 但是,大多数日志文件每天都会增加一 ...

  7. 【工程实践】python 字典排序

    前言 在数据处理时,为了方便统计经常使用字典存储数据.python中的字典是'键:值'对的可变序列.排序时可以指定根据键或者是值为对象进行排序.用到的函数是sorted(). 1.语法规则 1-1 代 ...

  8. python字典排序|按值排序|按键排序

    python字典排序 用sorted函数 字典按值排序 sorted(dic.items(), key=lambda x:x[1], reverse=True) dic为字典名 reverse为Tru ...

  9. Python字典排序、字典列表排序、嵌套字典排序

    python字典是常用的数据结构,经常用到各种python字典的排序,记录一下不同字典排序的方法. 正常字典排序 正常的字典我们都知道,其排序如下: a={100:1,101:0,102:2}b=so ...

最新文章

  1. 特斯拉起诉小鹏汽车员工窃取商业机密,何小鹏回应
  2. 春节囤货清单 | 15篇近期值得读的AI论文
  3. java keytool 代码_JDK keytool证书工具功能代码解析_java_脚本之家
  4. C#三层结构(4)——扩展-加密字符窜源代码
  5. listview移动时 item背景颜色错位问题
  6. Oracle10g备份集压缩新特性(Backupset Compression)
  7. 【渝粤题库】国家开放大学2021春1376机械制造装备及设计题目
  8. apache 修改服务器配置,Apache服务器配置全攻略
  9. jq之hover()
  10. 经典功率谱估计及Matlab仿真
  11. Spring 实战-第一章-基本概念
  12. 下班前网上搜集的方法哈哈
  13. #if defined和#if !defined的含义
  14. 等保要求的 linux 系统扫描脚本
  15. RegExp-2 【正则量词、属性、方法、使用技巧】
  16. 某天的零点时刻0:0:0 和截至时刻23:59:59
  17. python3获取天气预报
  18. Process-wide API spying - an ultimate hack 摘要翻译(二)
  19. 数值卡,让数据可视化玩出新花样丨三叠云
  20. 飞机飞行与碰撞问题matlab,建模案例—飞行管理问题.ppt

热门文章

  1. 企业实战_14_MyCat跨分片查询_全局表
  2. Excel 数据导入到Access数据库,报错“找不到可安装的ISAM”的解决办法
  3. 【Linux】快速搭建一个基于Vue的大型单页应用
  4. php 模数 指数 公钥生成_php实现JWT认证
  5. java double add,Java中的DoubleStream.Builder add()方法
  6. 星外主机销售系统源码_业务员大客户销售订货订单管理系统源码开发外包解析...
  7. java sonar教程_SonarQube配置与使用教程.PDF
  8. java垃圾回收 分代_Java分代垃圾回收策略原理详解
  9. qt中使用QCompleter实现查找功能
  10. mate7安装android o,华为Mate7升级安卓6.0详细教程