根据字典中值得大小,对字典中的项排序

案例1:
某班语文科目的成绩以字典形式存储,形式为:{"lili":89,"wenwen":91 ...}
根据成绩高低,计算学生的排名

解决方案:
使用内置函数sorted
1,利用zip将字典数据转化为元组
2,传递sorted函数的key参数

# eg_v1 利用zip将字典数据转化为元组

from random import randint
stud = {x:randint(60,100) for x in "abcdefghjk"} # 创建随机的成绩单字典
print(stud)
# {‘a‘: 89, ‘b‘: 87, ‘d‘: 83, ‘j‘: 97, ‘e‘: 74, ‘f‘: 75, ‘h‘: 97, ‘g‘: 61, ‘c‘: 62, ‘k‘: 90}
print(stud.keys()) # 得到字典的键
# dict_keys([‘a‘, ‘b‘, ‘d‘, ‘j‘, ‘e‘, ‘f‘, ‘h‘, ‘g‘, ‘c‘, ‘k‘])
print (stud.values()) # 得到字典的值
# dict_keys([‘a‘, ‘b‘, ‘d‘, ‘j‘, ‘e‘, ‘f‘, ‘h‘, ‘g‘, ‘c‘, ‘k‘])

z = zip(stud.values(),stud.keys())
print (sorted(z))
# [(61, ‘g‘), (62, ‘c‘), (74, ‘e‘), (75, ‘f‘), (83, ‘d‘), (87, ‘b‘), (89, ‘a‘), (90, ‘k‘), (97, ‘h‘), (97, ‘j‘)]

  

# eg_v2 传递sorted函数的key参数

from random import randint

rest = {x:randint(60,100) for x in "abcdefghjk"} # 创建随机的成绩单字典
print (rest)
# {‘h‘: 96, ‘j‘: 95, ‘b‘: 97, ‘g‘: 78, ‘f‘: 64, ‘k‘: 81, ‘d‘: 72, ‘e‘: 69, ‘c‘: 93, ‘a‘: 61}
print (rest.items())
# dict_items([(‘h‘, 96), (‘j‘, 95), (‘b‘, 97), (‘g‘, 78), (‘f‘, 64), (‘k‘, 81), (‘d‘, 72), (‘e‘, 69), (‘c‘, 93), (‘a‘, 61)])
result = sorted(rest.items(),key = lambda x:x[1])
print (result)
# [(‘a‘, 61), (‘f‘, 64), (‘e‘, 69), (‘d‘, 72), (‘g‘, 78), (‘k‘, 81), (‘c‘, 93), (‘j‘, 95), (‘h‘, 96), (‘b‘, 97)]

  

时间: 2024-10-09 04:54:36

根据字典中值得大小,对字典中的项排序的相关文章

给定一个字典,通过查找这个字典,替换给定的字符串中的中文为英文

描述:第一对START和END中给定的是字典 第二对START和END是给定字符串 输入: START hello nihao yes shi like xihuan world shijie gril nvhai END START i'm a nvhai! i xihuan shijie. nihao END 输出: i'm a gril! i like world. hello #define _CRT_SECURE_NO_WARNINGS #include <iostream> #in

jquery中json数据转换为字典

首先在前台页面中的json数据为 var recipe = {}; recipe["name"] = $("#name").val(); recipe["age"] = $("#age").val(); recipe["sex"] = $("#sex").val(); recipe["medicine"] = "{'name': 'a', 'value':

pythonPython中的元组、字典——05

元组 元组的元素不可被修改,不能增加元素或删除元素 一般写元组的时候,建议在最后加入',' tuple tu = (11,22,[],(),'dasd',33,33,44,True,) 可以通过索引取值 v = tu[0] print(v) v = 11 可以切片 v = tu[0:2] print(v) v = (11,22) 可以与str,tuple类型之间进行转换 s = 'feafafa2' li = [23,5,3213,'32sda'] tu = (312,43,'dsa') v =

python中的列表和字典(二)

三. 字典以及相关使用 1. 字典的定义 dict{} 2. 字典特征:字典是无序的,key-value键值对形式,key值不重复 3. 字典的赋值:dictA = {keyA: valueA, keyB: valueB, keyC: valueC} 4. 字典的取值:dictA[keyA]  dictA.get(keyA) 5. 字典的所有键:dictA.keys()      key-value获取:dictA.items() 6. 修改字典中元素的值:dictA[keyA] = value

如何对字典按键值大小进行排序

有些时候,我们需要对字典按键值大小进行排序.比如以下情况:一个字典,包含的内容为 国家:人口数.{'Indonesia' : '239870000', 'Malaysia' : '28401000'}注意字典的键值为字符串'239870000',不能直接进行大小排序.我们需要将它转换成数字. 下面做一个案例.已有一个世界各国从1960年到2010年的人口统计.我们需要将2010年各国人口提取出来按从大到小排序. 参考代码: '''导入一个人口统计文本文件'''import jsonfilenam

Android EditText中字符大小与光标位置

最近的工作需要自己写一个数字键盘用于数字的输入,采用的方法是自定义一个  Dialog,然后将数字显示在EditText中.在处理过程中遇到遇到一个问题,在EditText的点击事件中屏蔽系统键盘并弹出自定义的Dialog,无法获取用户选中的字符即Selection,造成的问题现象是用户不能选中中间某个位置修改输入值. 为了解决这一问题,需要在EditText的点击事件中获取Selection. 解决方法是:1.在EditText点击事件中获取用户点击位置,主要取其中的touchX值(这里主要讨

随机图片大小在DIV中垂直居中对齐总结

老遇到这种样式 现在总结一下 <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style> *{margin:0;padding:0;line-height: 1;font-size: '宋体';padding

C++11 中值得关注的几大变化(网摘)

C++11 中值得关注的几大变化(详解) 原文出处:[陈皓 coolshell] 源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里.所以,我就不翻译了,我在这里仅对文中提到的这些变化"追问为什么要引入这些变化"的一个探讨,只有知道为了什么,用在什么地方,我们才能真正学到这个知识.而以此你可以更深入地了解这些变化.所以,本文不是翻译.因为写

栈中空间大小

var a=1; var b=true; var o=new Object(); var f=new Function(); a和b在栈中开辟的空间大小不一样,因为两个的数据类型是不一样的,数据类型的本质就是开辟数据大小的一个模板 o和f在栈中空间大小是一样的,因为都是存堆空间地址的,跟堆空间大小没关系的