python数据结构-如何根据字典中值的大小对字典项排序
如何根据字典中值的大小对字典项排序
问题举例
某班英语成绩以字典形式存储,如何根据成绩高低,计算学生成绩排名
{
“tom”:80,
"lily":88,
"marton":99,
}
分析:字典中的值无法用sorted函数进行排序,我们可以将字典各项转换成元组,使用sorted函数进行排序
元组元素比较规则,先比较第一个元素,若相等则比较第二个,以此类推。
将字典中的各项转换成元组,使用内置函数sorted进行排序
(1)列表解析
from random import randint
d = {"stu%d" % i: randint(60, 100) for i in range(10)}
l = [(v, k) for k, v in d.items()] #list comprehensions
res = sorted(l, reverse=True)
print(res)
(2)zip函数
from random import randint
d = {"stu%d" % i: randint(60, 100) for i in range(10)}
zip1 = zip(d.values(), d.keys()) #zip
l = list(zip1)
res = sorted(l, reverse=True)
print(res)
传递sorted函数的key参数
from random import randint
d = {"stu%d" % i: randint(60, 100) for i in range(10)}
res = sorted(d.items(),key=lambda item: item[1], reverse=True) #sorted key
print(res) res_d = {k: (i, v) for i, (k, v) in enumerate(res, 1)}
print(res_d)
python数据结构-如何根据字典中值的大小对字典项排序的更多相关文章
- python 学习笔记(三)根据字典中值的大小对字典中的项排序
字典的元素是成键值对出现的,直接对字典使用sorted() 排序,它是根据字典的键的ASCII编码顺序进行排序,要想让字典根据值的大小来排序,可以有两种方法来实现: 一.利用zip函数将字典数据转化为 ...
- python字典中值为列表或字典的构造方式
1.值为列表的构造方法 dic = {} dic.setdefault(key,[]).append(value) >>dic.setdefault('a',[]).append(1) & ...
- Python max()方法扩展:求字典中值最大的键
重要的应该写在前面[捂脸] 场景一:仅求最大值对应的键,代码如下: >>> dic = {'A':4, 'B':2, 'C':3} >>> max_key = ...
- ios开发-将false和true,当做字典的值,并将字典转成字符串,上传到服务器
今天遇到一个需求,将false和true,当做字典的值,并将字典转成字符串,上传到服务器. 可能这个需求大家遇到过,大部分原因是安卓的同事已经按这样的需求开发完了.我们只能跟随安卓的脚步了. (一)处 ...
- 1、如何在列表,字典,集合种根据条件筛选数据?2、如何为元组中的每个元素命名,提高程序的可读性3、如何统计出序列中元素出现的频度4、如何根据字典中value的大小,对字典的key进行排序
一.数据筛选: 处理方式: 1.filter函数在py3,返回的是个生成式. from random import randint data = [randint(-100,100) for i in ...
- 如何根据字典值的大小,对字典中的项排序---Python数据结构与算法相关问题与解决技巧
实际案例: 某班英语成绩以字典形式存储为: { 'LiLei' : 90, 'Jim' : 88, 'Lucy': 92 } 如何根据成绩高低,计算学生排名 -- 根据分数,进行排名,并且把排名信息添 ...
- python创建有序字典及字典按照值的大小进行排序
有序字典 在Python中,字典类型里面的元素默认是无序的,但是我们也可以通过collections模块创建有序字典 # -*- coding:utf-8 -*- # python有序字典需导入模块c ...
- python数据结构-如何统计序列中元素的频度
如何统计序列中元素的频度 问题举例 如何找出随机序列[1, 5, 6, 5, 3, 2, 1, 0, 6, 1, 6]中出现频度最高的3个元素? 如何统计某篇英文文章中词频最高的5个单词? 将序列转换 ...
- 【python 数据结构】相同某个字段值的所有数据(整理成数组包字典的形式)
class MonitoredKeywordMore(APIView): def post(self, request): try: # 设置原生命令并且请求数据 parents_asin = str ...
随机推荐
- Openfire 单人聊天和多人聊天(发送消息、接收消息)
Openfire 单人聊天和多人聊天(发送消息.接收消息) 一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFrie ...
- CTF线下防御战 — 让你的靶机变成“铜墙铁壁”
本文首发安全客,未经允许禁止转载.原文链接 一. 前言 随着CTF的普及,比赛的形式也有了越来越多的花样,对于线下赛来说,开始出现了安全加固或者防御战之类的环节,亦或者因为拿下靶机后不希望其他攻击者进 ...
- Matlab信号处理基础
一. 简介 离散傅立叶.离散余弦和离散小波变换是图像.音频信号常用基础操作,时域信号转换到不同变换域以后,会导致不同程度的能量集中,信息隐藏利用这个原理在变换域选择适当位置系数进行修改,嵌入信息,并确 ...
- C语言 · 滑动解锁
题目:滑动解锁 滑动解锁是智能手机一项常用的功能.你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过的"相邻"的点.这些划过的点所组成的有向折线,如果与预设的折线在图 ...
- spring gateway 截取response 长度缺失
网上找到一段获取修改response的代码:https://blog.csdn.net/tianyaleixiaowu/article/details/83618037 代码如下: import or ...
- Linux下printf、fprintf、sprintf的区别
(1)fprintf() int fprintf( FILE *stream, const char *format, ... ); 用于文件操作,根据指定的format(格式)发送信息(参数)到 ...
- gitlab 建立本地仓库
1.首先在gitlib上进行注册 注册与登录 为了用户的隐私,我们的私人 GitLab 平台关闭了自主注册.申请 GitLab 账号请联系工作站管理员:liuhaoyang@pku.edu.cn 初次 ...
- myeclipse中的classpath .
博客分类: java基础 myeclipse中的classpath是一个很重要的问题 myeclipse的在查找的时候都是按照其查找,而且myeclipse有一个专门的文件来保存classpath ...
- Houdini技术体系 基础管线(二) :Heightfiled与UE4的无缝导入以及对World Composition的支持
Authored by TraceYang 前言 传统的制作做比较真实大世界3D关卡地形时,通常的采用的方式是把HeightMap和SplatMap(Layer Mask)导入到引擎的地形系统里 ...
- Centos7 安装系统服务、开机自启动
Centos7 安装系统服务 1 编写可执行程序 * 这里可以是任意编程语言(C.C++.Java.PHP.Python.Perl ...)编写的程序: 当前假设此程序的执行目录为: /myservi ...