案例:

某班英语成绩以字典的形式存储为:

{‘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_如何对字典进行排序?的更多相关文章

  1. !!Python字典增删操作技巧简述+Python字典嵌套字典与排序

    http://developer.51cto.com/art/201003/186006.htm Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些 ...

  2. python数据结构-如何根据字典中值的大小对字典项排序

    如何根据字典中值的大小对字典项排序 问题举例 某班英语成绩以字典形式存储,如何根据成绩高低,计算学生成绩排名 { “tom”:80, "lily":88, "marton ...

  3. python字典的排序,按key排序和按value排序---sorted()

    >>> d{'a': 5, 'c': 3, 'b': 4} >>> d.items()[('a', 5), ('c', 3), ('b', 4)] 字典的元素是成键 ...

  4. Python字典按值排序、包含字典的列表按字典值排序的方法

    operator.itemgetter函数 operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),要注意,operator.i ...

  5. Python对列表中字典元素排序

    问题起源 json对象a,b a = '{"ROAD": [{"id": 123}, {"name": "no1"}]} ...

  6. operator.itemgetter() 字典列表排序

    ## 字典列表排序 students = [ {"name": "Stanley", "age": 22, "score" ...

  7. iOS —— 字典遍历排序

    字典NSDictionary一般的遍历方法都是: NSArray* arr = [yourdictonary allKeys]; for(NSString* str in arr) { NSLog(& ...

  8. Python强化训练笔记(四)——字典的排序

    假如有学生成绩以字典顺序排列:{'Tom': 87, 'Jack': 90, 'Rose': 100.....} 想要根据学生的成绩来进行排序,可以考虑使用sorted函数.但是sorted函数用在字 ...

  9. 【python cookbook】【数据结构与算法】13.通过公共键对字典列表排序

    问题:想根据一个或多个字典中的值来对列表排序 解决方案:利用operator模块中的itemgetter()函数对这类结构进行排序是非常简单的. # Sort a list of a dicts on ...

随机推荐

  1. Django--进阶--中间件的使用

    - 中间件是什么? 中间件是一个钩子框架,它们可以介入Django 的请求和响应处理过程.它是一个轻量级.底层的“插件”系统,用于在全局修改Django 的输入或输出. 每个中间件组件负责完成某个特定 ...

  2. Android App版本自动更新

    App在开发过程中,随着业务场景的不断增多,功能的不断完善,早期下载App的用户便无法体验最新的功能,为了能让用户更及时的体验App最新版本,在App开发过程加入App自动更新功能便显得尤为重要.更新 ...

  3. SSIS 延迟验证(DelayValidation)

    验证是一个事件,该事件在Package执行时,第一个被触发,验证能够避免SSIS引擎执行一个有异常的Package或Task.延迟验证(DelayValidation)是把验证操作延迟到Package ...

  4. springboot之集成mybatis mongo shiro druid redis jsp

    闲来无事,研究一下spingboot  发现好多地方都不一样了,第一个就是官方默认不支持jsp  于是开始狂找资料  终于让我找到了 首先引入依赖如下: <!-- tomcat的支持.--> ...

  5. 在做vue计算属性,v-for处理数组时遇到的一个bug

    bug: You may have an infinite update loop in a component render function 无限循环 需要处理的数组(在 ** ssq **里): ...

  6. 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 ...

  7. 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 ...

  8. 大区间素数筛选(POJ 2689)

    /* *POJ 2689 Prime Distance *给出一个区间[L,U],找出区间内容.相邻的距离最近的两个素数和距离最远的两个素数 *1<=L<U<=2147483647 ...

  9. sublime text 3如何安装插件

    原博客地址:http://blog.csdn.net/weixin_40682842/article/details/78727266 我自己的部分操作如下: 学习Sublime Text扩展插件的安 ...

  10. Linux下安装PostgreSQL 转载linux社区

    Linux下安装PostgreSQL [日期:2016-12-25] 来源:Linux社区  作者:xiaojian [字体:大 中 小]   在Linux下安装PostgreSQL有二进制格式安装和 ...