当前位置:首页>python>《Python 从入门到精通》036|字典的常见操作:增删改查与遍历

《Python 从入门到精通》036|字典的常见操作:增删改查与遍历

  • 2026-10-11 08:42:14
《Python 从入门到精通》036|字典的常见操作:增删改查与遍历

上一章我们已经认识了字典。

你可以把字典理解成一张带字段的信息表。 比如一个学生,不再是死记硬背第 0 个是什么、第 1 个是什么,而是直接通过 姓名、年龄、成绩 这些字段去取值。

但只会定义字典,还远远不够。

真正写程序时,你最常干的事情其实是这五类:

查一个字段 加一个字段 改一个字段 删一个字段 把整份数据遍历一遍

这就是所谓的增删改查与遍历。

如果说上一章是在认识字典,那么这一章,才算是真正开始用字典。

一、先准备一个最常用的字典例子

为了把知识讲透,我们先准备一份学生信息:

student = {'name': '张三','age': 18,'gender': '男','score': 95}

后面的所有操作,基本都围绕这个例子来展开。

这样你不会感觉知识点是碎的,而是能看到它们在同一份数据上怎么连续使用。

二、查:先学会从字典里拿数据

查,是最基础的一步。

字典不像列表那样按位置取值,它是按键来找值。

student = {'name': '张三','age': 18,'gender': '男','score': 95}print(student['name'])print(student['score'])

输出:

张三95

这就是最直接的取值方式。

你给出键,Python 就把对应的值拿出来。

写字典时,你会越来越体会到一个好处:

字段名本身就是说明。

看到 student['score'],你几乎不用猜。 可如果是 data[3],你常常得回头翻前面的定义。

所以字典一旦用熟,你会发现代码阅读体验会好很多。

三、查值时最容易踩的坑:键不存在

先看一段代码:

student = {'name': '张三','age': 18}print(student['score'])

这段代码会直接报错。

为什么?

因为 score 这个键根本不存在。

也就是说,用中括号取值时,你必须保证这个键真的有。 只要键名写错,或者字段本来就没这个内容,程序就会炸。

这在真实项目里是很常见的坑。

比如接口里有时候返回手机号,有时候不返回。 你如果想当然地直接去取,很容易报错。

所以除了中括号取值,我们还要学一个更稳的方式。

四、get():更安全的取值方法

字典里有个非常常用的方法,叫 get()。

它的作用就是:

取值的时候更温和,不会因为键不存在而直接报错。

看例子:

student = {'name': '张三','age': 18}print(student.get('name'))print(student.get('score'))

输出:

张三None

注意这里的区别:

student['score'] 会报错student.get('score') 不报错,只会返回 None

这就安全得多。

你还可以给它一个默认值:

print(student.get('score', 0))

输出:

0

意思就是:

如果有 score,就返回它 如果没有,就先给我一个默认值 0

这在业务里特别实用。

比如:

没有昵称,就显示游客 没有分数,就按 0 算 没有城市,就显示未知地区

看一个更生活化的例子:

user = {'username': 'tom','email': 'tom@example.com'}nickname = user.get('nickname', '游客')print(nickname)

输出:

游客

所以这一小节你要记住一句非常实用的话:

中括号适合确定有这个键的时候get() 适合不确定这个键在不在的时候

五、增:给字典新增一个键值对

字典新增内容非常简单,直接赋值就行。

student = {'name': '张三','age': 18}student['score'] = 95print(student)

输出:

{'name': '张三', 'age': 18, 'score': 95}

你会发现,没有什么专门的 add 方法。 因为对字典来说,新增一个键值对,本质上就是给一个新键赋值。

这点和列表不太一样。 列表新增通常会想到 append()。 字典新增,直接用等号。

再来一个例子:

student['city'] = '北京'print(student)

输出:

{'name': '张三', 'age': 18, 'score': 95, 'city': '北京'}

是不是很直接。

字典这套设计有个很妙的地方:

如果键原本没有,就是新增 如果键原本有了,就是修改

也就是说,同样一行代码,既可能是新增,也可能是修改。关键看这个键原来在不在。

六、改:修改已有键对应的值

如果键已经存在,你再赋值,效果就是修改。

student = {'name': '张三','age': 18,'score': 95}student['score'] = 98print(student)

输出:

{'name': '张三', 'age': 18, 'score': 98}

原来 score 是 95,现在变成了 98。

这个操作看着普通,但在实际开发里用得非常多。

比如:

修改用户昵称 更新库存 刷新登录时间 调整订单状态

本质上都是改某个键对应的值。

比如商品库存:

product = {'name': '键盘','price': 299,'stock': 50}product['stock'] = 49print(product)

这就是一次很典型的更新操作。

七、同样是赋值,怎么区分是新增还是修改

这是很多新手一开始会迷糊的点。

看下面这两句:

student['score'] = 95student['age'] = 20

第一句可能是新增。 第二句可能是修改。

判断方法只有一个:

看这个键之前存不存在。

如果不存在,就是新增。 如果已经存在,就是修改。

你不需要额外写两套语法,Python 会自动帮你处理。

这一点其实很省脑子。

八、删:del 删除键值对

字典里的删除,最常见的是用 del。

student = {'name': '张三','age': 18,'score': 95}del student['age']print(student)

输出:

{'name': '张三', 'score': 95}

age 这个键值对就被删掉了。

这里要注意,del 删除的是整组内容,不是只删值不删键。 字典里键和值是一对一对绑在一起的。

删的时候也有一个坑:

如果你删的键根本不存在,也会报错。

比如:

del student['gender']

如果 gender 本来就没有,程序就会报错。

所以 del 适合你非常确定这个键存在的时候用。

九、pop():删除并顺手拿到被删掉的值

有时候,我们不只是想删除,还想知道删掉的到底是什么。

这时候可以用 pop()。

student = {'name': '张三','age': 18,'score': 95}age = student.pop('age')print(age)print(student)

输出:

18{'name': '张三', 'score': 95}

你看,pop() 很像一种顺手带走。

一边删 一边把删掉的值拿回来

这在很多场景里都很好用。

比如用户退出登录时,把 token 从字典里移除,同时记录一下被移除的值。 比如处理参数时,把一个字段拿出来后就不再保留。

不过也要注意:

如果你 pop() 一个不存在的键,也会报错。

你也可以给默认值,避免报错:

result = student.pop('gender', '没有这个字段')print(result)

输出:

没有这个字段

这种写法在防御性编程里很常见。

十、clear():一键清空字典

如果你想把字典里的内容全部清空,可以用 clear()。

student = {'name': '张三','age': 18,'score': 95}student.clear()print(student)

输出:

{}

这时候字典还在,只是里面的内容没了。

你可以把它理解成:

不是把这个箱子扔了 而是把箱子里的东西全倒空了

这和变量直接重新赋值为空字典虽然结果类似,但语义上还是稍微有点区别。

十一、len():快速看字典里有多少组数据

字典里最常见的统计动作,不是求和,而是先看字段数量。

student = {'name': '张三','age': 18,'gender': '男','score': 95}print(len(student))

输出:

4

因为它有 4 个键值对。

你以后处理配置、接口返回、表单提交时,经常会先看看字典里到底装了多少项。len() 就是最直接的方式。

十二、in 和 not in:判断键在不在

字典里也能用 in。

但这里有个重要细节:

对字典使用 in,判断的是键,不是值。

看代码:

student = {'name': '张三','age': 18,'score': 95}print('name'in student)print('gender'in student)

输出:

TrueFalse

它看的不是有没有值叫张三,而是有没有键叫 name。

这一点很重要。

比如你想在修改前先判断字段在不在:

if'score'in student:    student['score'] = 100

这就很稳。

很多时候,先判断再操作,比上来就硬取要安全。

十三、update():一次更新多组数据

前面我们说过,字典可以一组一组地新增或修改。 但如果你一次要更新很多项,一个个写就有点慢。

这时候可以用 update()。

student = {'name': '张三','age': 18}student.update({'age': 20,'score': 96,'city': '上海'})print(student)

输出:

{'name': '张三', 'age': 20, 'score': 96, 'city': '上海'}

这里发生了三件事:

age 原来有,所以被修改score 原来没有,所以被新增city 原来没有,所以也被新增

这就是 update() 的好处。

一口气更新一批字段,非常适合处理接口参数、配置合并、默认值覆盖这些场景。

十四、遍历字典:真正开始批量处理数据

前面的增删改查,更多是在单独操作某一个字段。 但程序里更常见的情况是:

我要把整个字典扫一遍

这就进入遍历了。

遍历字典,是你把字典真正用起来的关键一步。

十五、直接遍历字典,拿到的是键

先看最基础的写法:

student = {'name': '张三','age': 18,'score': 95}for key in student:    print(key)

输出:

nameagescore

注意,直接 for key in student,拿到的是键,不是值。

这一点一定要记住。

很多新手第一次写时,以为会把整组内容取出来,结果打印出来全是字段名,然后就懵了。

其实这是字典的默认遍历规则。

十六、通过键再去拿值

既然遍历时拿到的是键,那我们就可以再根据键去取值。

student = {'name': '张三','age': 18,'score': 95}for key in student:    print(key, student[key])

输出:

name 张三age 18score 95

这就是最经典的字典遍历方式。

先拿键 再根据键拿值

你以后做数据展示、打印信息、生成报表时,这个写法会非常高频。

十七、keys():只看所有键

虽然直接遍历字典本身就能拿到键,但有时候为了代码更清楚,也会显式写 keys()。

student = {'name': '张三','age': 18,'score': 95}for key in student.keys():    print(key)

效果和直接遍历字典差不多。

输出:

nameagescore

那为什么还要有 keys()?

因为它表达得更明确。 一眼就能知道,你现在就是在处理所有键。

在教学里,它也能帮新手把思路理顺:

字典里有键,也有值 现在我只拿键这一部分

十八、values():只遍历所有值

如果你只关心值,不关心键,就可以用 values()。

student = {'name': '张三','age': 18,'score': 95}for value in student.values():    print(value)

输出:

张三1895

这种写法在做数据汇总时特别常见。

比如你有一堆商品库存,想把所有库存值拿出来处理。 或者你只想看所有分数,不关心是谁的分数。

这时候 values() 就很顺手。

十九、items():同时拿到键和值

这是字典遍历里最好用的一种方式。

student = {'name': '张三','age': 18,'score': 95}for key, value in student.items():    print(key, value)

输出:

name 张三age 18score 95

这个写法为什么受欢迎?

因为它省事。

不用你先拿键,再单独写一次 student[key]。 直接一次把键和值都拆出来了。

你可以把 items() 理解成:

把字典里的每一组 键:值 都成对拿出来

如果你以后只记一种字典遍历写法,优先记这个。

因为它最完整,也最常用。

二十、一个真实感更强的遍历例子

光看抽象例子还是容易忘,我们来写一个更像实际业务的小场景。

比如你要把用户资料打印成整齐的信息卡:

user = {'用户名': 'coder01','年龄': 20,'城市': '杭州','会员': True}for key, value in user.items():    print(key, ':', value)

输出:

用户名 : coder01年龄 : 20城市 : 杭州会员 : True

这种写法以后你做日志、做表单展示、做信息回显时,都会经常见到。

字典一旦会遍历,很多数据展示就不再难了。

二十一、遍历时修改字典,要小心

这部分是一个容易忽略但很重要的提醒。

一般不建议你在遍历字典的同时,直接对它增删键。

比如这种写法就很危险:

data = {'a': 1,'b': 2,'c': 3}for key in data:if key == 'b':del data[key]

这样很容易出问题。

因为你一边在走这张表,一边又在改这张表的结构。 程序很容易混乱。

更稳的做法是:

先决定哪些要删 遍历结束后再删

或者先复制出一份键列表再操作。

新手阶段先记住一句就行:

遍历时尽量只读少改,尤其别边遍历边删键

二十二、字典增删改查,放在一起看一遍

现在我们把前面的操作串起来,做一个完整演示。

student = {'name': '张三','age': 18}# 查print(student.get('name'))# 增student['score'] = 95# 改student['age'] = 19# 删student.pop('name')# 遍历for key, value in student.items():    print(key, value)

输出大致是:

张三age 19score 95

你会发现,字典这套东西并不复杂。 真正需要你掌握的,不是死背方法名,而是形成操作习惯。

我要拿数据,用什么方式最安全 我要补字段,怎么加 我要更新字段,怎么写 我要删内容,是不是还要顺手拿回旧值 我要批量看内容,用哪种遍历更顺

这才是实战思维。

二十三、字典和列表一起用,才更像真实项目

现实里的数据,常常不是一个字典单独存在,而是很多字典放在一个列表里。

比如学生列表:

students = [    {'name': '张三', 'score': 95},    {'name': '李四', 'score': 88},    {'name': '王五', 'score': 92}]

这时候你就可以这样遍历:

for student in students:    print(student['name'], student['score'])

输出:

张三 95李四 88王五 92

你看,一旦字典和列表组合起来,程序就开始有一点项目味道了。

所以这章虽然讲的是字典基本操作,但它其实是在给后面的项目开发打地基。

二十四、最容易犯的几个错,提前帮你避坑

先说第一个。

很多人会把字典当列表,写出这样的代码:

student[0]

这是不对的。 字典不是按位置取值,而是按键取值。

第二个坑,是键名写错。

student['scroe']

你以为写的是 score,结果字母顺序错了。 这种错误特别常见,而且肉眼很容易漏过去。

第三个坑,是想当然地取不存在的键。

student['phone']

如果没有这个字段,程序就会报错。 不确定时,优先考虑 get()。

第四个坑,是边遍历边删除。

这个前面已经提醒过,新手阶段尽量绕开。

二十五、练习题:别看懂就算,自己一定要敲

下面这些练习非常适合巩固这一章。

1. 定义一个商品字典,包含商品名、价格、库存,然后打印商品名

product = {'name': '鼠标','price': 59.9,'stock': 300}print(product['name'])

2. 给这个商品字典新增一个品牌字段

product['brand'] = '罗技'print(product)

3. 把价格改成 49.9

product['price'] = 49.9print(product)

4. 删除库存字段

del product['stock']print(product)

5. 遍历字典,打印所有键和值

for key, value in product.items():    print(key, value)

你把这几步自己敲一遍,字典的基础操作基本就顺了。

二十六、本章小结

这一章你真正要带走的,不只是几个方法名,而是一整套字典操作思路。

查值,最直接的是中括号,不确定键在不在时用 get() 更稳。 新增和修改,都是通过赋值完成。 删除可以用 del,也可以用 pop()。 清空整个字典,用 clear()。 判断键是否存在,可以用 in。 批量处理字典内容,最常用的是 items() 遍历。

把这些放在一起,你就已经掌握了字典最核心的实战能力。

从这一章开始,字典不再只是一个看着懂的数据类型,而是真正成了你手里的工具。

下一章我们继续讲 集合 set 入门:去重为什么这么高效。 到了那里,你会发现,原来有些问题用列表做很笨,用集合却能一下子变轻松。

最新文章

随机文章