跟着NOAI考纲学Python,学完就能考,第9课
每天一个知识点,带你自学NOAI,加入我们吧~
前面学了列表和函数。列表用索引取数据:第0个、第1个……但如果你想用"名字"来查成绩呢?总不能记住每个人排第几吧。这节课学字典——用"名字:值"的方式存数据,想查谁直接用名字找。
创建字典
用花括号 {} 创建字典,里面放 键: 值 对,用逗号隔开:
student = {"小明": 90, "小红": 85, "小刚": 72} |
{'小明': 90, '小红': 85, '小刚': 72}
<class 'dict'>
拆开看:
• "小明": 90 — "小明" 是键(key),90 是值(value)
• 每对键值之间用逗号隔开
• 字典的类型是 dict
字典就像通讯录——你不需要记住小明排第几,直接翻到"小明"就能找到他的电话。
取值和修改
用键来取值,写法是 字典[键]:
student = {"小明": 90, "小红": 85} |
90
{'小明': 90, '小红': 85, '小刚': 78}
{'小明': 90, '小红': 95, '小刚': 78}
键已存在就是修改,不存在就是添加。同样的写法 dict[键] = 值,一举两得。
判断键是否存在
如果你用一个不存在的键去取值,Python会报错。所以取值之前最好先判断一下:
student = {"小明": 90, "小红": 85} |
True
False
查无此人
键 in 字典 返回 True 或 False。养成习惯:不确定键存不存在,先用 in 判断,再取值。
遍历字典
直接用 for 循环遍历字典,拿到的是所有的键:
student = {"小明": 90, "小红": 85, "小刚": 72} |
小明
小红
小刚
如果想同时拿到键和值,用 .items():
student = {"小明": 90, "小红": 85, "小刚": 72} |
小明 的成绩是 90
小红 的成绩是 85
小刚 的成绩是 72
.items() 每次循环给你一对键和值,用两个变量 name, score 分别接住。另外还有 .keys() 只拿键、.values() 只拿值,用法类似。
实战:统计字符出现次数
字典最常见的用法之一:统计。给你一个字符串,统计每个字符出现了几次:
text = "hello" |
{'h': 1, 'e': 1, 'l': 2, 'o': 1}
逻辑很简单:遍历每个字符,如果字典里已经有了就+1,没有就设为1。这个套路在很多题目里都会用到。
易错点
1. 用不存在的键取值 → KeyError
student = {"小明": 90} |
KeyError: '小刚'
字典里没有 "小刚" 这个键,直接取就报错。解决办法:先用 in 判断,再取值。
2. 字典的键不能重复
d = {"a": 1, "b": 2, "a": 3} |
{'a': 3, 'b': 2}
写了两个 "a",后面的覆盖前面的,不会报错但值变了。
动手试试
自己先想,想完了去香农平台上写代码跑一遍验证。
|
练习1:预测输出 下面这段代码运行后,屏幕上会输出什么?
提示:已有的键会被修改,没有的键会被添加。 |
|
练习2:找bug 下面这段代码想打印小刚的成绩,但运行报错了。哪里出了问题?怎么修?
提示:字典里有"小刚"这个键吗? |
|
练习3:写代码 给你一个名字列表 names = ["小明", "小红", "小明", "小刚", "小红", "小明"],用字典统计每个名字出现了几次,然后打印结果。 提示:和前面"统计字符出现次数"的套路一样。 |
去平台上手写代码
学会字典,你可以用"名字"来存取数据了。回顾一下:
• {键: 值} — 创建字典
• dict[键] — 取值或修改
• 键 in dict — 判断键是否存在
• for k, v in dict.items() — 遍历所有键值对
这篇文章讲的是香农NOAI学习平台"Python基础"模块的第九课。平台上有更多的练习题,写完代码点运行,对不对立刻就知道。
香农NOAI学习平台
地址:shannon.arpa.school
微信扫码登录就能用,免费。
找到「Python基础」→「字典」,从第一道题开始写。
下一篇讲元组——和列表长得像,但创建之后不能改。什么时候该用元组?看完就知道。