Hello ,同为小白的朋友们大家好,这期主要为大家带来有关字典的一些实用技巧。上篇笔记通过感人肺腑的老白让大家认识到了字典这么有用的数据类型,这一期让我们看看如何能更好的操作字典。

基础篇

下面我给大家来一个简单的字典方法汇总,诚意满满,希望大家喜欢,如果有错误或者遗漏希望大神可以补上~

创建字典,得到字典中的键值,新增,修改,删除,清空字典

stocks ={'IBM':146, # 创建字典

'MSFT':44,

'MAOTAI':1000}

stocks['IBM'] # 查询字典中的一个值 Out:146

stocks.get('MSFT') # 查询字典中的一个值 Out:44

stocks.get('a','Not found') # 查询字典中的一个值,如果没有,返回 Not found

stocks['a'] # 抛出错误,因为字典中没有这个值

stocks['IBM']=200 # 修改值

stocks['APPLE']=400 # 新增键和值

stocks.update({'APPLE':900,

'MAOTAI':0,

'MSFT':250}) # 一次修改多个值

del stocks['APPLE'] # 删除一个值

stocks.pop['MAOTAI'] # 删除并返回删除的值

stocks.keys() # 获得字典的所有键

stocks.values() # 获得字典的所有值

stocks.items() # 获得字典的所有键和值,形式为 (key,value)

for k,v in stocks.items(): # 遍历一个字典,输出它的键和值

print(k,v)

stocks.clear() #清空一个字典,让字典为空

del stocks #直接删除一个字典

好啦,基础方法就这么多大概,这里创建了一个stocks字典用来表示股票名称和价钱,然后在基础上举例子的,有两点需要大家注意:

一次更新多个值的时候用update()方法会很方便

如果利用dict[key]的方式获取一个字典中不存在的值会报错,正确做法是用get()函数,效果好很多

奇淫巧技篇

创建字典歪门邪道之一: list + zip

除了常规的方式,还有很多其他方式可以帮助我们创建一个字典,比如我们这里想要创建一个字典来表示一个学生的各科成绩:

subject=['Math','Chinese','English','Science','Art']

marks=[80,78,96,60,75]

final_result=dict(zip(subject,marks))

print(final_result.items())

Out: dict_items([('Math', 80), ('Chinese', 78), ('English', 96), ('Science', 60), ('Art', 75)])

这里其实很容易看懂,我们把subject的所有值作为key值,把marks所有值看成values的值,最后用Python很常见的zip就啪啪啪的将他们合并啦,形成了一个新的字典final_result

创建字典歪门邪道之二: 利用等号

上面的字典还可以通过这种形式来创建;

final_result= dict(Math=80,Chinese=78,English=96,Science=60,Art=75)

print(final_result.items())

Out: dict_items([('Math', 80), ('Chinese', 78), ('English', 96), ('Science', 60), ('Art', 75)])

字典排序: 根据键值Key排序

还是使用上面已经建好的字典 final_result,我们先根据字典中的键值来排序:

print(sorted(final_result.items())) # 自动根据键的值从小到大或者按照A-Z排序

Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]

换一种方式:

import operator

print(sorted(final_result.items(),key=operator.itemgetter(0)))

Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]

或者用lamba函数秀一波:

print(sorted(final_result.items(),key=lambda x:x[0]))

Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]

不要问我为什么,我也在学,但是我深知在Python编程装逼界你不用几个lamba,reduce什么的都不好意思和人打招呼,哈哈

如果我们想要实现根据键值倒序也很简单:

print(sorted(final_result.items(),reverse=True))

Out:[('Science', 60), ('Math', 80), ('English', 96), ('Chinese', 78), ('Art', 75)]

字典排序: 根据Value值排序

其实大家看到了根据key的排序,也猜到了如何根据value 排序:

print(sorted(final_result.items(),key=lambda x:x[1])) #根据分数排序,从低到高

Out:[('Science', 60), ('Art', 75), ('Chinese', 78), ('Math', 80), ('English', 96)]

或者换一种方式:

import operator

print(sorted(final_result.items(),key=operator.itemgetter(1)))

Out:[('Science', 60), ('Art', 75), ('Chinese', 78), ('Math', 80), ('English', 96)]

倒序也是类似:

print(sorted(final_result.items(),key=lambda kv:kv[1],reverse=True))

Out:[('English', 96), ('Math', 80), ('Chinese', 78), ('Art', 75), ('Science', 60)]

这里我在lamba后面没有写x,写了一个kv,就是告诉大家这里是什么不太重要,先这么理解就行

获取字典的子集

我们将会一直使用上面的final_result字典来示范,这里如果我们想要得到这个学生成绩大于70分的字典子集应该怎么做呢,很简单:

final_result= dict(Math=80,Chinese=78,English=96,Science=60,Art=75)

above_seventy ={subject:mark for subject,mark in final_result.items() if mark >70}

print(above_seventy.items())

Out:dict_items([('Math', 80), ('Chinese', 78), ('English', 96), ('Art', 75)])

交换字典中的key和value的值

这个小技巧可以这样实现:

exchange_key_value= dict(zip(final_result.values(),final_result.keys()))

print(exchange_key_value.items())

Out: dict_items([(80, 'Math'), (78, 'Chinese'), (96, 'English'), (60, 'Science'), (75, 'Art')])

获取字典最大值最小值

简直不要太简单呀:

print("The best mark is {}".format(max(final_result.values())))

print("The worst mark is {}".format(min(final_result.values())))

Out: The best mark is 96

The worst mark is 60

总结

没啥可说的啦,写了这么多,求老铁们双击666鼓励一波!!!!

完结,撒花~

学生成绩字典、获取最高分科目分数python_Python 基础起步 (八) 字典实用技巧大全,申精干货,必看!...相关推荐

  1. 学生成绩字典、获取最高分科目分数python_Python高效编程技巧

    点击上方毛利学python,选择置顶或星标 第一时间送达Python 技术干货! 作者 l jerryning 来源 l Python编程与实战 工作中经常要处理各种各样的数据,遇到项目赶进度的时候自 ...

  2. 编写一个程序,读入学生成绩,获取最高分best,然后根据下面的规则赋等级值。

    题目要求 编写一个程序,读入学生成绩,获取最高分best,然后根据下面的规则赋等级值. 如果分数>=best-10,等级为A 如果分数>=best-20,等级为B 如果分数>=bes ...

  3. 学生成绩字典、获取最高分科目分数python_实例:找出分数最高的学生

    课程亮点: 一图胜千言,让文科生都尽量能看得懂的python教程!!!另外加详细的笔记作为辅助工具,500多条笔记帮助学员快速学习Python500多个知识点 课程内容: 1. Python3语言总体 ...

  4. *7.1 (指定等级)编写一个程序,读入学生成绩,获取最高分 best, 然后根据下面的规则赋等级值

    如果分数>=best-10,等级为 A 如果分数>=best-20,等级为 B 如果分数>=best-30,等级为 C 如果分数>=best-40,等级为 D 其他情况下,等级 ...

  5. Java黑皮书课后题第7章:*7.1(指定等级)编写一个程序读入学生成绩,得到最高分best,然后根据下面的规则给出等级值。程序提示用户输入学生总数,然后提示用户输入所有的分数,最后显示等级给出结论

    7.1(指定等级)编写一个程序读入学生成绩,得到最高分best,然后根据下面的规则给出等级值 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 *7.1(指定等级)编写一个程序读入学生成 ...

  6. C语言按各科分数段统计人数,(更新啦)学校学生成绩统计通用模板(科目、分数、统计分数段等均可自定,班级数、学生人数不受限制)...

    更新说明: 1.增加了导入.导出数据功能. 2.该功能可以实现版本更新时不用手动复制数据,可实现一键导入导出. 导语微信号☞gdpc-service 这是一款适用于学校平时统一考试成绩统计表.这是长期 ...

  7. Sql 查询学生成绩表中每个科目的最高分及对应科目和学生

    一道面试题,现场没写正确(默哀),回来记录一下 学生成绩表 : CREATE TABLE `tabscore` (   `id` int(11) NOT NULL AUTO_INCREMENT,   ...

  8. Excel下的数据挖掘:学生成绩统计分析实战之统计分数段人数

    第2章 统计分数段人数 2.1 利用数据透视数据表统计分数段 实例2-1 1.操作步骤 2.2利用countifs函数统计各分数段人数 * 实例2-2 2.3用其它函数统计分数段人数    对成绩进行 ...

  9. 用字典存储学生成绩查询_中考用分数评价学生音体美成绩未尝不是好事

    中考用分数评价学生音体美成绩未尝不是好事 中考用分数评价学生音体美成绩未尝不是好事 王营(特约评论员)2020-11-30 20:50 培养德智体美劳全面发展的学生,离不开科学的评价体系.多年来,全面 ...

最新文章

  1. uwsgi php,详解uWSGI的编码问题解决方法
  2. 【笔记】公钥密码学之基于离散对数的密码体制
  3. 存储过程提示data truncation_手机DATA重新分区教程(超详细)
  4. c语言合同信息管理,合同管理系统C语言代码.doc
  5. java builder pool_每周10道Java面试题:String, String Pool, StringBuilder
  6. java时间规划书_【计算机本科补全计划】Java学习笔记(九) Java日期时间
  7. Android 旋转木马轮播,jQuery旋转木马式幻灯片轮播特效
  8. mysql比较varchar值大小_Mysql varchar大小长度问题
  9. Windows下设置Mongodb用户名密码
  10. matlab hspice联合仿真,matlab hspice
  11. 谷歌浏览器flash插件离线下载,最新版
  12. 小葫芦弹幕助手连接服务器失败,为什么自动弹幕发送老是失败?如何解决?
  13. 安卓6.0获取相机权限
  14. 如何修改网络游戏服务器端的数据,网络游戏服务器端编程:数据操纵语句
  15. 利用比值判敛法求收敛半径的问题
  16. pyinstaller 打包exe启动慢的问题
  17. chrome 打开网页速度很慢的可能原因
  18. dev-c++输出的中文乱码
  19. 我学历不高,怎样找前端的工作?
  20. UniApp 小程序实现PDF电子签名 拖拽

热门文章

  1. c++ ransac
  2. Towards Facilitating Empathic Conversations in Online Mental Health Support 论文阅读笔记(一)
  3. linux jre环境变量配置
  4. 【SCI征稿】中科院2区SCI,CCF推荐,评职代表作首选快刊
  5. Cocos Creator Android 启动黑屏加载指定图片背景
  6. 景观风水十大原则 (转载)
  7. Feign 与 OpenFeign
  8. 计算机双证学的是什么,计算机在职研究生同样有双证吗?
  9. macOS idea maven包下载中途断网后,重新尝试下载后无法下载的解决方法
  10. 【测试】cstring头文件中memset的功能