python_如何对字典进行排序?
案例:
某班英语成绩以字典的形式存储为:
{‘lili’:78, ‘jin’:50, ‘liming’: 30, ......}
依据成绩高低,进行学生成绩排名
如何对字典排序?
方法1:
#!/usr/bin/python3 from random import randint def sort_dict(data):
# 获得字典的key
keys = data.keys() # 获得字典的value
valus = data.values() # 按(value,keys)进行zip拼接
data_items = zip(valus, keys) # 按value进行排序,依据zip函数值的先后顺序,reverse表示列表是否翻转
return sorted(data_items, reverse=True) if __name__ == '__main__':
# 生成abcdefg学生对应的分数
data = {k: randint(0, 100) for k in 'abcdefg'} # 获取排名
result = sort_dict(data)
print(result)
方法2:
按key排序
#!/usr/bin/python3 from random import randint def sort_dict(data):
print(data.items())
# 按key进行排序,reverse 表示列表是否翻转,x[0] 取的是data.items()中对应字典的key值
return sorted(data.items(), key=lambda x: x[0], reverse=True) if __name__ == '__main__':
# 生成abcdefg各学生对应的分数
data = {k: randint(0, 100) for k in 'abcdefg'} # 获取排名
result = sort_dict(data)
print(result)
按value排序
#!/usr/bin/python3 from random import randint def sort_dict(data):
print(data.items())
# 按value进行排序,reverse 表示列表是否翻转,x[0] 取的是data.items()中对应字典的value值
return sorted(data.items(), value=lambda x: x[1], reverse=True) if __name__ == '__main__':
# 生成abcdefgg各学生对应的分数
data = {k: randint(0, 100) for k in 'abcdefg'} # 获取排名
result = sort_dict(data)
print(result)
先把字典变成列表中元组形式,然后通过sorted函数,lambda迭代每个列表值,x[0]指向字典key,x[1]指向value,reverse是否反转,默认从小到大
python_如何对字典进行排序?的更多相关文章
- !!Python字典增删操作技巧简述+Python字典嵌套字典与排序
http://developer.51cto.com/art/201003/186006.htm Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些 ...
- python数据结构-如何根据字典中值的大小对字典项排序
如何根据字典中值的大小对字典项排序 问题举例 某班英语成绩以字典形式存储,如何根据成绩高低,计算学生成绩排名 { “tom”:80, "lily":88, "marton ...
- python字典的排序,按key排序和按value排序---sorted()
>>> d{'a': 5, 'c': 3, 'b': 4} >>> d.items()[('a', 5), ('c', 3), ('b', 4)] 字典的元素是成键 ...
- Python字典按值排序、包含字典的列表按字典值排序的方法
operator.itemgetter函数 operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),要注意,operator.i ...
- Python对列表中字典元素排序
问题起源 json对象a,b a = '{"ROAD": [{"id": 123}, {"name": "no1"}]} ...
- operator.itemgetter() 字典列表排序
## 字典列表排序 students = [ {"name": "Stanley", "age": 22, "score" ...
- iOS —— 字典遍历排序
字典NSDictionary一般的遍历方法都是: NSArray* arr = [yourdictonary allKeys]; for(NSString* str in arr) { NSLog(& ...
- Python强化训练笔记(四)——字典的排序
假如有学生成绩以字典顺序排列:{'Tom': 87, 'Jack': 90, 'Rose': 100.....} 想要根据学生的成绩来进行排序,可以考虑使用sorted函数.但是sorted函数用在字 ...
- 【python cookbook】【数据结构与算法】13.通过公共键对字典列表排序
问题:想根据一个或多个字典中的值来对列表排序 解决方案:利用operator模块中的itemgetter()函数对这类结构进行排序是非常简单的. # Sort a list of a dicts on ...
随机推荐
- Django--进阶--中间件的使用
- 中间件是什么? 中间件是一个钩子框架,它们可以介入Django 的请求和响应处理过程.它是一个轻量级.底层的“插件”系统,用于在全局修改Django 的输入或输出. 每个中间件组件负责完成某个特定 ...
- Android App版本自动更新
App在开发过程中,随着业务场景的不断增多,功能的不断完善,早期下载App的用户便无法体验最新的功能,为了能让用户更及时的体验App最新版本,在App开发过程加入App自动更新功能便显得尤为重要.更新 ...
- SSIS 延迟验证(DelayValidation)
验证是一个事件,该事件在Package执行时,第一个被触发,验证能够避免SSIS引擎执行一个有异常的Package或Task.延迟验证(DelayValidation)是把验证操作延迟到Package ...
- springboot之集成mybatis mongo shiro druid redis jsp
闲来无事,研究一下spingboot 发现好多地方都不一样了,第一个就是官方默认不支持jsp 于是开始狂找资料 终于让我找到了 首先引入依赖如下: <!-- tomcat的支持.--> ...
- 在做vue计算属性,v-for处理数组时遇到的一个bug
bug: You may have an infinite update loop in a component render function 无限循环 需要处理的数组(在 ** ssq **里): ...
- Gym 100952G&&2015 HIAST Collegiate Programming Contest G. The jar of divisors【简单博弈】
G. The jar of divisors time limit per test:2 seconds memory limit per test:64 megabytes input:standa ...
- 2016 USP-ICMC-Codeforces-Gym101063C-Sleep Buddies Gym101063F-Bandejao Gym101063J-The Keys
Gym101063C-Sleep Buddies It is nighttime in the Earth Colony on Mars and everyone is getting ready t ...
- 大区间素数筛选(POJ 2689)
/* *POJ 2689 Prime Distance *给出一个区间[L,U],找出区间内容.相邻的距离最近的两个素数和距离最远的两个素数 *1<=L<U<=2147483647 ...
- sublime text 3如何安装插件
原博客地址:http://blog.csdn.net/weixin_40682842/article/details/78727266 我自己的部分操作如下: 学习Sublime Text扩展插件的安 ...
- Linux下安装PostgreSQL 转载linux社区
Linux下安装PostgreSQL [日期:2016-12-25] 来源:Linux社区 作者:xiaojian [字体:大 中 小] 在Linux下安装PostgreSQL有二进制格式安装和 ...