[习题] 对此字典分别按照value 和key 如何排序?

dic1 = {'and':40, 'a':54, 'is':60, 'path':139, 'the':124, 'os':49}

In [38]: dic1 = {'and':40, 'a':54, 'is':60, 'path':139, 'the':124, 'os':49}
...: print(sorted(zip(dic1.values(),dic1.keys()))) #按value的值升序
...: print(sorted(zip(dic1.values(),dic1.keys()),reverse=True)) #按value的值降序
...:
...: print(sorted(zip(dic1.keys(),dic1.values()))) #按key的ascii码升序
...: print(sorted(zip(dic1.keys(),dic1.values()),reverse=True)) #按key的ascii码降序
...:
...: print(sorted(dic1.items(),key=lambda x:x[1],)) #按value的值升序
...: print(sorted(dic1.items(),key=lambda x:x[1],reverse=True)) #按value的值降序
...:
...: print(sorted(dic1.items(),key=lambda x:x[0],)) #按key的ascii码升序
...: print(sorted(dic1.items(),key=lambda x:x[0],reverse=True)) #按key的ascii码降序
...:
[(40, 'and'), (49, 'os'), (54, 'a'), (60, 'is'), (124, 'the'), (139, 'path')]
[(139, 'path'), (124, 'the'), (60, 'is'), (54, 'a'), (49, 'os'), (40, 'and')] [('a', 54), ('and', 40), ('is', 60), ('os', 49), ('path', 139), ('the', 124)]
[('the', 124), ('path', 139), ('os', 49), ('is', 60), ('and', 40), ('a', 54)] [('and', 40), ('os', 49), ('a', 54), ('is', 60), ('the', 124), ('path', 139)]
[('path', 139), ('the', 124), ('is', 60), ('a', 54), ('os', 49), ('and', 40)] [('a', 54), ('and', 40), ('is', 60), ('os', 49), ('path', 139), ('the', 124)]
[('the', 124), ('path', 139), ('os', 49), ('is', 60), ('and', 40), ('a', 54)]

  

知识点: zip(),sorted(),lambda

zip: 

zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。

用法: zip(iter1 [,iter2 [...]]) --> zip object:

In [79]: a = 'abcdefg'

In [80]: b = '1234567890'

In [81]: zip(a,b)
Out[81]: <zip at 0x1ce2b8d4fc8> In [82]: c = zip(a,b) In [83]: for i in c:
...: print(i)
...:
('a', '1')
('b', '2')
('c', '3')
('d', '4')
('e', '5')
('f', '6')
('g', '7')

sorted:

对指定可迭代对象iterable 排序并返回一个新对象,不改变原数据;key 可以设置为按str、int或者指定值(如字典的value)排序,默认是None,将按照默认对象类型排序,如果对象是str,则按ascii 码排序,如果是对象是int 数字,则按数字排序;reverse 默认升序(False),True 为降序。

sorted(iterable, key=None, reverse=False)

lambda:

最后两处lambda 比较绕,可以在( http://pythontutor.com/visualize.html#mode=display )这个网站边调试边分析x 和x[1] 的值是什么。

以下截图中,lambda表达式中x的值是一个tuple("and",40),x[1] 就表示第1个元素(40),最终sorted 就是按字典的value 来进行排序。

Python [习题] 字典排序的更多相关文章

  1. 深入Python(1): 字典排序 关于sort()、reversed()、sorted()

    http://www.cnblogs.com/BeginMan/p/3193081.html 一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠 ...

  2. python中字典排序,列表中的字典排序

    python中字典排序,列表中的字典排序 一.使用python模块:operator import operator #首先要导入模块operator x = {1:2, 3:4, 4:3, 2:1, ...

  3. python中字典排序

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  4. python进阶--字典排序

    zip()函数 sorted() 要求对字典中,按值的大小排序 解决方案: 利用zip函数 zip函数介绍: zip函数可以将可迭代对象打包成一个个元组,在python3中返回一个对象,在python ...

  5. python 对字典"排序"

    对字典进行排序?这其实是一个伪命题,搞清楚python字典的定义---字典本身默认以key的字符顺序输出显示---就像我们用的真实的字典一样,按照abcd字母的顺序排列,并且本质上各自没有先后关系,是 ...

  6. Python - DICT 字典排序 - OrderedDict

    官方地址: https://docs.python.org/2/library/collections.html#collections.OrderedDict >>> # regu ...

  7. Python [习题] 字典扁平化

    习题: 将以下字典扁平化,输出为 target 字典格式source = {'a': {'b': 1, 'c': 2}, 'd': {'e': 3, 'f': {'g': 4}}}target = { ...

  8. python给字典排序

    应用场景: 统计一篇文章中单词的出现频率,然后进行排序 利用sorted函数,返回一个已经排序好的list,但不改变原来的数据结构 In [1]: dt = {'a':3,'b':2,'c':1} I ...

  9. [Python] dict字典排序和多条件排序

    利用lambda实现排序:要实现多条件排序,只需要依次指定排序的标准,具体实现如下 counter = {'是': 1, '不是': 1, '你': 3} counter_list = sorted( ...

随机推荐

  1. MySQL主从复制 + Mycat实现读写分离

    说明:两台MySQL服务器都是使用CentOS6.5系统,MySQL版本为mysql-5.7.17 MySQL一主一被实现主从复制 注意:写包括insert,delete,update 操作:读只有s ...

  2. Masonry框架源码深度解析

    Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...

  3. UWP appButtonBar样式

    UWP 的appButtonBar使用<AppBarButton Icon = "Next" Label = "Next" /> Icon是 Sym ...

  4. Mysql编写sql语句的小技巧

    1.查询数据(保证查询性能) SELECT * 和 SELECT t.id , t.name:后者性能其实总体优于前者. 2.在查询的时候最好给表起个 别名,方便找到表中要查询的字段.执行sql的进行 ...

  5. 关于对vector3及其衍生变量的理解

    关于对vector3,vector2类及其衍生变量的理解 vector3简单来讲即表示向量和点的系统类,这个结构用于处理向量和点,也包含许多做向量运算的函数. 而vector2即少一维向量的类,用于处 ...

  6. CMake vs Make对比

    程序员现在已经使用了CMake和Make了很久.当您加入大公司或开始使用大型代码库开发项目时,您需要处理所有这些构建.你必须看到这些“CMakeLists.txt”文件浮动.你应该在终端上运行“cma ...

  7. mybatis 参数为list时,校验list是否为空

    校验objStatusList 是否为空 <if test="objStatusList != null and objStatusList.size() > 0 "& ...

  8. ASP.NET Core中的OWASP Top 10 十大风险-SQL注入

    不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: https://dotnetcoretutorials.com/201 ...

  9. SpringMVC自定义配置消息转换器踩坑总结

    问题描述 最近在开发时候碰到一个问题,springmvc页面向后台传数据的时候,通常我是这样处理的,在前台把数据打成一个json,在后台接口中使用@requestbody定义一个对象来接收,但是这次数 ...

  10. KMP (next数组的性质及证明)

    性质:如果len%(len-next[len-1])==0,则字符串中必存在最小循环节,且循环次数即为len/(len-next[len-1]); 证明:在前len个字符组成的字符串,存在最小循环节k ...