当前位置:首页>python>使用openclaw制作python零基础教学-08

使用openclaw制作python零基础教学-08

  • 2026-09-07 02:58:32
使用openclaw制作python零基础教学-08

零基础学Python:Day8!字典:用键值对轻松管理结构化数据

昨天我们学习了Python中最常用的数据结构——列表,可以轻松存储一堆有序数据。今天我们继续学习另一个超级实用的数据结构——字典(Dict)!有了字典,我们就可以用键值对的方式存储结构化数据,比如一个人的姓名、年龄、身高、体重,管理起来比列表更直观,实际开发中用得非常多~老规矩,先公布昨天的作业答案。

📋 昨日作业答案

1. 定义一个列表存储最喜欢的5部电影,完成系列操作

操作步骤:输出第二部电影 → 输出倒数第一部 → 添加新电影到末尾 → 删除第三部 → 遍历输出

# 定义列表,存储5部电影movies = ["肖申克的救赎", "阿甘正传", "星际穿越", "盗梦空间", "楚门的世界"]# 输出第二部电影(索引是1)print("第二部电影:", movies[1])# 输出倒数第一部电影print("最后一部电影:", movies[-1])# 添加一部新电影到末尾movies.append("星际迷航")# 删除第三部电影(索引是2)del movies[2]# 遍历整个列表输出所有电影print("\n最终列表:")for movie in movies:print(movie)

运行结果:

第二部电影: 阿甘正传最后一部电影: 楚门的世界最终列表:肖申克的救赎阿甘正传盗梦空间楚门的世界星际迷航

完美,所有操作都完成了,你做对了吗?

2. 计算列表中所有数字的和与平均值

列表:numbers = [12, 34, 5, 43, 27, 8, 19, 46]

numbers = [12, 34, 5, 43, 27, 8, 19, 46]total = 0for num in numbers:    total += numavg = total / len(numbers)print(f"总和:{total}, 平均值:{avg:.2f}")

运行结果:

总和:194, 平均值:24.25

3. 去除列表中重复的名字

列表:names = ["小明", "小红", "小刚", "小丽", "小明", "小强", "小红"]

思路:新建一个空列表,遍历原来的列表,如果名字不在新列表里,就加进去,这样就不会有重复了。

names = ["小明", "小红", "小刚", "小丽", "小明", "小强", "小红"]new_names = []for name in names:if name not in new_names:        new_names.append(name)print(new_names)

运行结果:

['小明', '小红', '小刚', '小丽', '小强']

完美,没有重复了,这个思路非常容易理解,新手也能写出来。当然Python还有更简单的方法(用集合),我们后面会学到。

4. 用嵌套列表实现九九乘法表

思路:外层循环控制行(1-9),内层循环控制列(1-当前行),把每一行的结果存入列表,最后把所有行存入大列表。

# 存储整个九九乘法表multi_table = []# 行从1到9for i in range(1, 10):# 每一行又是一个列表    row = []# 列从1到当前行ifor j in range(1, i+1):        row.append(f"{j}×{i}={i*j}")# 把当前行加入大列表    multi_table.append(row)# 遍历输出九九乘法表for row in multi_table:for item in row:# 左对齐,占8个字符位置,好看对齐print(f"{item:<8}", end="")print()

运行结果:

1×1=1  1×2=2  2×2=4  1×3=3  2×3=6  3×3=9  1×4=4  2×4=8  3×4=12 4×4=16 1×5=5  2×5=10 3×5=15 4×5=20 5×5=25 1×6=6  2×6=12 3×6=18 4×6=24 5×6=30 6×6=36 1×7=7  2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49 1×8=8  2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64 1×9=9  2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81 

太工整了!完美实现了九九乘法表,用到了我们刚学的嵌套列表,是不是很有成就感?


好啦,都对完答案了,我们开始今天的正题——字典,这是Python里第二常用的数据结构,和列表搭配使用,简直无敌,赶紧学起来吧~


🤔 为什么需要字典?

我们之前学了列表,可以存储一组数据,那如果我们要存储一个人的具体信息,比如:姓名叫小明,年龄18岁,身高1.75米,体重65公斤,用列表怎么存?

person = ["小明", 18, 1.75, 65]

这样确实存进去了,但是你取数据的时候就麻烦了,你得记住姓名是索引0,年龄索引1,身高索引2,体重索引3,如果数据多了,你根本记不住哪个对应哪个,太容易搞混了。

而且如果顺序变了,比如改成[18, "小明", 1.75, 65],数据就全错了。

有了字典,我们就可以用键值对的方式存储数据,每个数据都有自己的“键(key)”,通过键就能快速拿到对应的值(value),根本不用记索引:

person = {"name": "小明","age": 18,"height": 1.75,"weight": 65}

你看,是不是一目了然?想拿姓名直接用person["name"],想拿年龄直接用person["age"],根本不用记顺序和索引,太直观了!

简单来说:字典是Python中用来存储键值对的无序容器,每个值都可以通过它的键快速查找,非常适合存储结构化数据。


字典基础:怎么定义字典?

定义字典非常简单,用**大括号{}**把键值对括起来,多个键值对之间用逗号隔开,每个键值对是键:值的格式,语法就是这样:

# 空字典,什么数据都没有empty_dict = {}# 存储个人信息的字典person = {"name": "小明","age": 18,"height": 1.75,"is_student": True}# 存储商品信息的字典goods = {"id": 1001,"name": "苹果手机","price": 5999,"colors": ["黑色", "白色", "蓝色"]}

你看,定义字典是不是超级简单?值可以是任意类型:数字、字符串、列表、甚至另一个字典,非常灵活。

⚠️ 注意:字典的键必须是不可变类型,一般用字符串或者数字,不能用列表当键哦(列表是可变的),值没有限制,什么都可以。

另外,字典里的键是唯一的,不能有两个相同的键,如果重复了,后面的会覆盖前面的。


怎么从字典里取数据?通过键拿值

定义好了字典,怎么取数据呢?超级简单,直接用字典名[键]就能拿到对应的值:

person = {"name": "小明","age": 18,"height": 1.75}print(person["name"]) # 输出: 小明print(person["age"]) # 输出: 18print(person["height"]) # 输出: 1.75

是不是比列表直观太多了?根本不用记索引,看键就知道拿什么数据。

避免键不存在报错:get()方法

如果你写的键不存在字典里,直接用[]取会报错:

person = {"name": "小明", "age": 18}print(person["weight"])

会报错:

KeyError: 'weight'

这个时候我们可以用get()方法,它非常友好,如果键不存在,不会报错,会返回None,你还可以指定默认值:

person = {"name": "小明", "age": 18}# 键不存在,返回Noneprint(person.get("weight")) # 输出: None# 指定默认值,键不存在就返回默认值print(person.get("weight", 65)) # 输出: 65,键不存在,返回我们给的默认值65

太人性化了吧!所以当你不确定键是否存在的时候,用get()就不会报错,非常好用。


怎么修改字典?增删改查都搞定

字典也是可变的,我们可以随时添加、修改、删除键值对,一个个来看:

1. 添加/修改元素:直接赋值

给字典添加新元素或者修改已有元素,都直接用字典名[键] = 值就好了:

  • 如果键已经存在,就是修改值
  • 如果键不存在,就是添加新的键值对

举个例子:

person = {"name": "小明", "age": 18}print("修改前:", person) # 修改前: {'name': '小明', 'age': 18}# 修改已有键age的值person["age"] = 19print("修改age后:", person) # 修改age后: {'name': '小明', 'age': 19}# 添加新的键weightperson["weight"] = 65print("添加weight后:", person) # 添加weight后: {'name': '小明', 'age': 19, 'weight': 65}

就这么简单,直接赋值,是修改还是添加自动判断,太方便了!

2. 删除元素:pop()、del

删除键值对,常用两种方法:

  • pop():删除指定键的键值对,并且返回删除的值:

    person = {"name": "小明", "age": 18, "weight": 65}age = person.pop("age")print(f"删除了age,值是:{age}") # 删除了age,值是:18print("删除后:", person) # 删除后: {'name': '小明', 'weight': 65}
  • del:Python关键字,直接删除指定键:

    person = {"name": "小明", "age": 18, "weight": 65}del person["age"]print(person) # 输出: {'name': '小明', 'weight': 65}

3. 清空字典:clear()

想清空字典里所有元素,直接用clear():

person = {"name": "小明", "age": 18}person.clear()print(person) # 输出: {},空字典

4. 检查键是否存在:in关键字

想判断某个键是否在字典里,直接用in就好了,非常方便:

person = {"name": "小明", "age": 18}print("name" in person) # 输出: True,键存在print("weight" in person) # 输出: False,键不存在

实际开发中经常用这个判断,非常好用。


字典常用遍历方法

我们经常需要遍历字典,常见的有三种遍历方式,我们一个个来看:

1. 遍历所有键:keys()方法

keys()方法会返回字典所有的键,我们可以用for循环遍历:

person = {"name": "小明", "age": 18, "weight": 65}for key in person.keys():print(key)

输出:

nameageweight

2. 遍历所有值:values()方法

values()方法会返回字典所有的值:

person = {"name": "小明", "age": 18, "weight": 65}for value in person.values():print(value)

输出:

小明1865

3. 同时遍历键和值:items()方法(最常用)

items()方法会返回所有的键值对,我们可以同时拿到键和值,这是实际开发中最常用的遍历方式:

person = {"name": "小明", "age": 18, "weight": 65}for key, value in person.items():print(f"{key}: {value}")

输出:

name: 小明age: 18weight: 65

太方便了,一目了然,同时拿到键和值,处理起来超级简单。


字典嵌套:存储更复杂的数据

字典和列表一样,也支持嵌套,你可以在字典里放字典,也可以在列表里放字典,这样就能存储非常复杂的数据了,我们举个实际的例子:

比如我们要存储一个班级所有学生的信息,每个学生是一个字典,然后把所有学生字典放到一个列表里,完美:

# 班级所有学生列表,每个学生是一个字典class_students = [    {"name": "小明", "age": 18, "score": 95},    {"name": "小红", "age": 17, "score": 98},    {"name": "小刚", "age": 18, "score": 88}]# 怎么取数据呢?比如取出小红的分数print(class_students[1]["score"]) # 输出: 98

太直观了!列表存多个,每个元素是字典存详细信息,这是实际开发中非常常见的数据格式,很多接口返回的数据都是这种结构,所以一定要掌握哦。

我们再遍历一下,输出所有学生的信息:

for student in class_students:print(f"姓名:{student['name']}, 年龄:{student['age']}, 分数:{student['score']}")

输出:

姓名:小明, 年龄:18, 分数:95姓名:小红, 年龄:17, 分数:98姓名:小刚, 年龄:18, 分数:88

完美,清晰明了。

再举一个字典嵌套字典的例子,比如存储多个商品信息,用商品id当键,商品字典当值:

# 商品字典,键是商品id,值是商品详情字典goods_dict = {1001: {"name": "苹果手机", "price": 5999, "stock": 100},1002: {"name": "华为手机", "price": 4999, "stock": 80},1003: {"name": "小米手机", "price": 3999, "stock": 120}}# 获取1

最新文章

随机文章