Python小白成长记 · 第5课(下)| 字典 & 习题
·
大家好,我是 星源,19岁自学Python的编程小白 🤓。 今天是字典篇的收尾战!带大家搞定嵌套字典、漂亮打印、井字棋实战、野餐物品统计,最后用习题夯实基础!🚀
📌 今日学习内容
👉 “用字典嵌套存复杂数据,打印野餐物品表格,把字典玩出花!”
✨ 知识点讲解
1️⃣ 嵌套字典和列表
-
概念:字典的值可以是列表或其他字典,构建复杂数据结构。
-
示例:
guest_items = { 'A': {'苹果': 5, '披萨': 12}, 'B': {'三明治': 3, '苹果': 2}, 'C': {'杯子': 3, '面条': 1} }
2️⃣ 项目:野餐物品统计
-
目标:统计所有客人的食物总数。
-
代码:
def totalBrought(guests, item): numBrought = 0 for k, v in guests.items(): numBrought += v.get(item, 0) return numBrought # 定义客人物品 allGuests = { 'A': {'苹果': 5, '披萨': 12}, 'B': {'三明治': 3, '苹果': 2}, 'C': {'杯子': 3, '面条': 1} } print('带来的物品总数:') print(' - 苹果 ' + str(totalBrought(allGuests, '苹果'))) print(' - 杯子 ' + str(totalBrought(allGuests, '杯子'))) print(' - 蛋糕 ' + str(totalBrought(allGuests, '蛋糕'))) print(' - 火腿三明治 ' + str(totalBrought(allGuests, '火腿三明治'))) print(' - 苹果派 ' + str(totalBrought(allGuests, '苹果派')))
3️⃣ 列表到字典的函数
-
目标:合并战利品列表到物品清单。
-
代码:
def addToInventory(inventory, addedItems): for item in addedItems: inventory[item] = inventory.get(item, 0) + 1 return inventory # 定义初始库存 inv = {'金币': 42, '绳子': 1} # 定义新增物品 dragonLoot = ['金币', '匕首', '金币', '金币', '红宝石'] # 更新库存 inv = addToInventory(inv, dragonLoot) # 打印更新后的库存 print(inv)
4️⃣ 漂亮打印(上节课补充)
-
模块:
pprint→ 格式化打印复杂数据结构。 -
示例:
import pprint pprint.pprint(inv)
5️⃣ 字典方法(上节课补充)
-
copy()和deepcopy():import copy >>> cheese = spam.copy() # 浅复制 >>> cheese = copy.deepcopy(spam) # 深复制
✨ 课后习题
-
空字典的代码:
{}。 -
包含键
'fow'和值42的字典:{'fow': 42}。 -
字典和列表的主要区别:字典无序,键可以是任意类型;列表有序,键只能是整数。
-
spam['foo']触发KeyError。 -
cat in spam.keys()和cat in spam无区别,后者是简写。 -
cat in spam.values()检查值是否存在。 -
简洁写法:
spam.setdefault('color', 'black')。 -
漂亮打印模块:
pprint,函数:pprint()。
✅ 总结
-
字典支持嵌套,构建复杂数据结构。
-
野餐物品项目:用双重循环统计总数。
-
战利品函数:用
get()安全累加值。 -
pprint模块让字典打印更整齐。 -
复制字典用
copy()(浅)或deepcopy()(深)。
📢 互动提问
👉 “第一次写嵌套字典时,有没有把键名写错导致数据乱套?” 留言分享你的“数据结构车祸现场”,一起互相安慰!
更多推荐

所有评论(0)