当前位置:
首页 > Python基础教程 >
-
使用sorted函数对字典元素排序
前言
几天前,你要是让我对字典的元素进行排序,我会告诉你,先用一个列表存储要排序的元素,然后使用sort()
对列表元素进行排序,之后就能根据键-值对应情况判断字典元素的顺序。
-
比如:
用字典存储学号和成绩,输出前三名的学号和成绩。
stu = {1002: 78, 1003: 89,
1001: 77, 1006: 98,
1005: 92, 1004: 100}
score = list(stu.values())
score.sort()
for key, val in enumerate(score[::-1]):
if key < 3:
for i in stu.keys():
if stu[i] == val:
print(i, val)
- 输出结果
1004 100
1006 98
1005 92
这是个蠢方法,费时又费力。好在我现在知道了sorted()函数,可以很方便地对字典进行排序。
sorted()函数
sorted可对所有可迭代对象进行排序操作。
sorted语法
sorted(iterable, cmp=None, key=None, reverse=False)
-
iterable
可迭代对象 -
cmp
比较的函数。这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。- 个人觉得cmp不如key好用。
-
key
主要是用来进行比较的函数。只有一个参数,具体的函数的参数就是取自可迭代对象中,指定可迭代对象中的一个元素进行排序。 -
reverse
排序规则。reverse=True 降序, reverse=False 升序(默认)
返回值
返回重新排序的列表
sorted()给字典排序
按value值对字典排序
需要用到key参数
- 对成绩进行降序排序
stu = {1002: 78, 1003: 89,
1001: 77, 1006: 98,
1005: 92, 1004: 100}
score = sorted(stu.items(), key=lambda item:item[1], reverse=True)
# 查看score
print(score)
# 取前三名
for index, val in enumerate(score):
if index < 3:
print(val[0], val[1], sep=" ")
-
stu.items():将stu的键值对转换为元组
dict_items([(1002, 78), (1003, 89), (1001, 77), (1006, 98), (1005, 92), (1004, 100)])
- stu.items()的每一个元素作为匿名函数的参数,返回第二个元素,也就是成绩,作为key参数的比较对象。
- reverse=True:降序排序
- 输出结果
[(1004, 100), (1006, 98), (1005, 92), (1003, 89), (1002, 78), (1001, 77)]
1004 100
1006 98
1005 92
按key值对字典排序
- 按学号进行排序
stu = {1002: 78, 1003: 89,
1001: 77, 1006: 98,
1005: 92, 1004: 100}
score = sorted(stu.items(), key=lambda item:item[0])
for index, val in enumerate(score):
print(val[0], val[1], sep=" ")
- 输出结果
1001 77
1002 78
1003 89
1004 100
1005 92
1006 98
只对键或值排序
如果只想输出键的排序结果或者值的排序结果。很简单,使用dict.keys()和dict.values()作为sorted的参数就行了。
stu = {1002: 78, 1003: 89,
1001: 77, 1006: 98,
1005: 92, 1004: 100}
print(sorted(stu.keys()))
print(sorted(stu.values()))
- 输出结果
[1001, 1002, 1003, 1004, 1005, 1006]
[77, 78, 89, 92, 98, 100]
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式