【Python 必会技巧】对字典按照键(key)或者值(value)排序

先总结一下,分为以下四种情况:

  • 情况一:按照键排序,只输出排序后所有的键
  • 情况二:按照值排序,只输出排序后所有的值
  • 情况三:按照键排序,同时输出排序后所有的键和对应的值
  • 情况四:按照值排序,同时输出排序后所有的键和对应的值
情况一:按照键排序,只输出排序后所有的键

直接使用 sorted() 方法,默认是对字典的键进行排序

>>> dict = {'b': 2, 'a': 1, 'd': 4, 'c': 3}
>>> print(sorted(dict))
['a', 'b', 'c', 'd']

也可以先用 dict.keys() 取字典的键,然后再使用 sorted() 方法进行排序

>>> dict = {'b': 2, 'a': 1, 'd': 4, 'c': 3}
>>> print(sorted(dict.keys()))
['a', 'b', 'c', 'd']

以上方法是从小到大排序,如果是从大到小,添加 reverse=True 即可

>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}
>>> print(sorted(dict.keys(), reverse=True))
['d', 'c', 'b', 'a']
情况二:按照值排序,只输出排序后所有的值

先用 dict.values() 取字典的值,然后再使用 sorted() 方法进行排序

>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}
>>> print(sorted(dict.values()))
[1, 2, 3, 4]

同理,如果是从大到小排序,添加 reverse=True 即可

>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}
>>> print(sorted(dict.values(), reverse=True))
[4, 3, 2, 1]
情况三:按照键排序,同时输出排序后所有的键和对应的值

方法一:dict.items() 方法可以得到包含字典键和值的元组,然后使用匿名函数 lambda,其中 i[0] 表示字典的键

>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}
>>> print(sorted(dict.items(), key=lambda i: i[0]))
[('a', 2), ('b', 1), ('c', 4), ('d', 3)]

方法二:使用 operator 模块中的 itemgetter 函数,其中 itemgetter(0) 表示字典的键

>>> from operator import itemgetter
>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}
>>> print(sorted(dict.items(), key=itemgetter(0)))
[('a', 2), ('b', 1), ('c', 4), ('d', 3)]

itemgetter 函数用于获取对象的哪些维的数据,参数为一些序号,以下举例说明:

>>> import operator
>>>
>>> a = [1, 2, 3, 4]
>>> b = operator.itemgetter(0)  # 定义函数b,获取对象的第0个域的值
>>> print(b(a))
1
>>> b = operator.itemgetter(0, 1) # 定义函数b,获取对象的第0个和第1个域的值
>>> print(b(a))
(1, 2)
情况四:按照值排序,同时输出排序后所有的键和对应的值

方法一:与情况三类似只需要将 i[0] 改成 i[1] 即可

>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}
>>> print(sorted(dict.items(), key=lambda i: i[1]))
[('b', 1), ('a', 2), ('d', 3), ('c', 4)]

方法二:与情况三类似只需要将 itemgetter(0) 改成 itemgetter(1) 即可

>>> from operator import itemgetter
>>> dict = {'a': 2, 'b': 1, 'c': 4, 'd': 3}
>>> print(sorted(dict.items(), key=itemgetter(0)))
[('a', 2), ('b', 1), ('c', 4), ('d', 3)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python 必会技巧】三元表达式(三目运算符)

三元表达式是编程中的一个固定格式,一般编程语言的格式为:判段条件 ? 条件为真时的结果 : 条件为假时的结果,举例说明: int A,B,C; A 1; B 2; C A > B ? 10 : 20; 解释:如果 A > B,就将 10 赋…

【转】Microsoft Cloud全新认证体系介绍

IT认证,是IT技术从业者必不可少的一个敲门砖,有了它让甲方、乙方以及原厂对你有了基本的了解,能够初步预判您是否胜任这一工作岗位。例如,大家耳熟能详的Microsoft MCSE,RedHat RHCE,VMware VCP、CISSP、CI…

【Python 必会技巧】使用 split() 方法对字符串进行切片

split() 方法可以将一个字符串按照指定的分隔符分割成多个子字符串,子字符串将会保存到列表中(不包含分隔符) split() 方法的语法:str.split(sep,maxsplit) str:要分割的字符串 sep:用于指定分隔符&…

【转】azure认证路线以及学习资源

Azure认证路线 考取AZ-300以及AZ-301 学习资源https://docs.microsoft.com/zh-cn/azure/https://docs.microsoft.com/zh-cn/learn/paths/azure-fundamentals/ 考试指南https://www.microsoft.com/zh-cn/learning/exam-AZ-300.aspxhttps://www.microsoft.com/zh-cn/learning/…

【Python 必会技巧】使用 join() 方法将序列中的元素拼接成字符串

Python 中 join() 方法可以将序列中的元素以指定的字符连接生成一个新的字符串。该序列可以是字符串、元组、列表或者字典 join() 方法的语法:str.join(sequence),其中 str:分隔符,可以为空;sequence:要连…

【转】Dynamics CRM 365零基础入门学习(一)Dynamics介绍以及开发工具配置

由于公司CRM平台从Salesforce向Dynamic 365转型,因此全身心投入学习了几天Dynamic 365,国内相关的资料很少,所以总结这几天学到东西,以避免初学者走弯路。 本章分享内容介绍 1.Dynamics的学习资料 2.Dynamics账号注册 3.Visual …

【Python 必会技巧】判断字符串是否为字母/数字/大小写/空白字符/有效标识符/可打印字符

简单来说: str.isalnum():判断所有字符是否都是数字或者字母 str.isalpha():判断所有字符是否都是字母 str.isdigit():判断所有字符是否都是数字 str.islower():判断字符串中所有字母是否都是小写 str.isupper()&a…

【转】Dynamics CRM 365零基础入门学习(二)Dynamics 插件注册的基本流程

插件的官方定义是:插件是可与 Microsoft Dynamics CRM 365 和 Microsoft Dynamics CRM Online 集成的自定义业务逻辑(代码),用于修改或增加平台的标准行为。也可以将插件认为是针对 Microsoft Dynamics CRM 触发的事件的处理程序。…

【Python 必会技巧】lambda 表达式(匿名函数)及其在内置函数中的应用

lambda 表达式,又称匿名函数,即,函数没有具体的名称,常用来表示内部仅包含 1 行表达式的函数。 使用 lambda 编写的代码更加简洁紧凑,但是 lambda 函数支持的功能却是十分有限的,目前 PEP8 已经不建议使用…

【转】Dynamics CRM 365零基础入门学习(三)Dynamics 通过Web API 来调用自定义的Action(使用插件)

今天想实现一个Search Product的功能,首先要将数据展示在页面,然后前端根据查询需求进行处理。之前是在salesforce中实现的,可以定义一个Search Product的页面,然后在页面中访问查询数据的Webservice即可。但是在Dynamic 365中并没…

【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别

Python 中赋值语句不复制对象,而是在目标和对象之间创建绑定关系。对于自身可变或者包含可变项的集合对象,开发者有时会需要生成其副本用于改变操作,进而避免改变原对象。copy 模块提供了通用的浅层复制 copy() 和深层复制 deepcopy() 操作。…

【转】Dynamics CRM 365零基础入门学习(四)Dynamics 使用profiler插件调试流程

今天我们介绍一种在dynamics开发中经常会用到的调试操作,其中一种调试方式即是profile调试。以下是我在项目开发中记录的调试流程,可供参考使用。 1、打开插件注册工具,会看到install Profile,点击即可安装。 2、在插件注册器中选择要调试的s…

【Python 必会技巧】利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题

先举个例子,分别以不指定编码、指定编码为 utf-8、指定编码为 utf-8-sig 三种方式来做比较,再将写入 csv 文件和 txt 文件来做个对比 一、不指定编码方式,直接存入 csv 文件 import csvwith open(test.csv, w) as fp:writer csv.writer(fp)…

【转】Dynamics CRM 365零基础入门学习(五)权限管理

一:安全角色 Microsoft Dynamics 365中的安全角色是各种实体的特权和访问级别矩阵。 它们根据其功能分组在不同的选项卡下。 这些组包括:核心记录,营销,销售,服务,业务管理,服务管理&#xff0…

【Python 必会技巧】使用 zip() 函数对序列进行压缩和解压操作

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。 利用 * 号操作符,可以将元组解压为列表。 zip…

【转】Dynamics CRM 365零基础入门学习(七)Dynamics 365 DataMigrationUtility tool使用

SDK里有个工具叫DataMigrationUtility,这个工具适合两个CRM系统之间的数据迁移。例如:在项目上线之初会做数据初始化的工作,一般这个工作会在UAT开始前完成,当UAT完成之后再把这部分初始化数据迁移到生产环境。那我费了半天劲把数…

【Python 标准库学习】日期和时间处理库 — datetime

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ datetime 模块提供了可以通过多种方式操作日期和时间的类。在支持日期时间数学运算的同时,实现的关注点更着重于如何能够更有效地解析其属性用于格式化输出和数据操作。 datet…

【Python 标准库学习】数据科学计算库 — math

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ math 模块官方文档:https://docs.python.org/3/library/math.html math 模块包含的函数按照用途可分为:数论与表示函数、幂函数与对数函数、三角函数、角度转换、双…

【转】Dynamics 365中的应用程序介绍

本人微信和易信公众号:微软动态CRM专家罗勇 ,回复275或者20180630可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me 。 Dynamics 365引入了应用程序,为啥…

【Python 标准库学习】伪随机数生成库 — random

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ 随机函数在很多科学计算中都会用到,比如生成一系列随机数来计算平均值、高斯分布、伽马分布、贝塔分布、对数正态分布等。 几乎所有模块函数都依赖于基本函数 random() &#…