目录
- 第一章 魔法词典库:键值对的终极容器
- 1.1 多重宇宙的入口(字典创建)
- 1.2 字典的「元素操控术」
- 1.3 高阶遍历仪式
- 第二章 秘银过滤器:集合的去重法则
- 2.1 集合的降生之礼
- 2.2 集合运算:元素炼金矩阵
- 2.3 真实应用案例
- 第三章 影分身禁术:深浅拷贝的迷宫
- 3.1 浅拷贝:镜像陷阱
- 3.2 深拷贝:完美分身术
- 3.3 应用场景指南
- 第四章 综合炼成阵:实战管理系统
- 4.1 角色属性管理器(字典高阶应用)
- 4.2 材料合成系统(集合实战)
第一章 魔法词典库:键值对的终极容器
1.1 多重宇宙的入口(字典创建)
# 基础召唤仪式
spellbook = {} # 空字典
element_power = {"水": 80, "火": 120}
# 高阶创造术
from_keys = dict.fromkeys(["金","木","水"], 100)
# → {'金':100, '木':100, '水':100}
# 字典推导式炼金术
squares = {x: x**2 for x in range(5)}
# → {0:0, 1:1, 2:4,...}
# 双列表合体术
keys = ["HP", "MP"]
values = [300, 150]
status = dict(zip(keys, values)) # → {'HP':300, 'MP':150}
1.2 字典的「元素操控术」
# 增删改查四元法
spells = {"火球术": 50, "治疗术": 30}
spells["雷电术"] = 80 # 新增技能
del spells["火球术"] # 删除旧技
spells["治疗术"] = 40 # 强化治疗量
print(spells.get("隐身术", "未习得")) # 安全获取
1.3 高阶遍历仪式
# 三维度洞察术
for key in spells.keys(): pass # 遍历咒语名
for value in spells.values(): pass # 查看灵力消耗
for k, v in spells.items(): # 最推荐方式
print(f"{k}:需要{v}点魔力")
第二章 秘银过滤器:集合的去重法则
2.1 集合的降生之礼
# 初始锻造方式
unique_numbers = {1, 2, 2, 3} # → {1,2,3}
# 从混沌中提炼
words = ["火", "火", "水", "风"]
elements = set(words) # → {'风','水','火'}
# 集合推导式魔法
powers = {x**2 for x in [-3, 2, -3]} # → {9,4}
2.2 集合运算:元素炼金矩阵
attack = {"火","雷","冰"}
defense = {"光","暗","雷"}
print(attack | defense) # 并集 → 所有元素
print(attack & defense) # 交集 → {"雷"}
print(attack - defense) # 差集 → {"火","冰"}
print(attack ^ defense) # 对称差 → {"火","冰","光","暗"}
2.3 真实应用案例
# 数据清洗:去重神器
duplicated_data = [23,45,23,67,45]
clean_data = list(set(duplicated_data)) # 秒去重!
# 访问日志分析(找出公共IP)
day1_ips = {"192.168.1.1", "192.168.1.5"}
day2_ips = {"192.168.1.1", "192.168.1.20"}
common_ips = day1_ips & day2_ips # → 共同访问者
第三章 影分身禁术:深浅拷贝的迷宫
3.1 浅拷贝:镜像陷阱
original = {"name": "法师", "skills": ["火球","治疗"]}
copy = original.copy()
copy["name"] = "魔导师" # 安全修改
copy["skills"].append("雷电") # 危险操作!
print(original["skills"]) # ['火球','治疗','雷电'] 被污染!
3.2 深拷贝:完美分身术
import copy
original = {"data": [[1,2], [3,4]]}
deep_copy = copy.deepcopy(original)
deep_copy["data"][0][0] = 99
print(original["data"][0][0]) # 仍然是1,本体无恙
3.3 应用场景指南
# 需要浅拷贝的情况 ➔
config = {"theme": "dark", "size": 12}
current_settings = config.copy() # 基础设置副本
# 必须深拷贝的情况 ➔
world_map = {"terrain": [[0]*10 for _ in range(10)]}
map_backup = copy.deepcopy(world_map) # 完全独立副本
第四章 综合炼成阵:实战管理系统
4.1 角色属性管理器(字典高阶应用)
# 动态构建角色
mage = {
"name": "吉安娜",
"attributes": {"INT":99, "STR":20},
"skills": set(["暴风雪", "寒冰箭"])
}
# 添加新技能
mage["skills"].add("冰霜新星")
# 属性修改校验
if mage["attributes"]["STR"] < 30:
print("近战抵抗!请强化力量属性")
4.2 材料合成系统(集合实战)
# 炼金配方库
recipes = {
"力量药水": {"龙鳞","魔草"},
"智慧药剂": {"星尘","魔草"}
}
# 检查材料是否充足
player_items = {"魔草","星尘","水晶"}
for potion, needs in recipes.items():
if needs <= player_items: # 子集判断
print(f"可合成:{potion}")
炼金大师箴言 🔮
字典是数据的百科全书
集合是元素的净化熔炉
深浅拷贝是操纵虚实的分界
当这三种力量交汇时…
你就能铸造出完美无瑕的数据圣器!
🔍 深度思考:
- 字典的键为什么必须使用不可变类型?
- 如何用集合实现高效的权限管理系统?
- 什么情况下使用
defaultdict
更高效?
💡 炼金实验室:
实现一个购物车系统:
- 使用字典记录商品信息和库存
- 用集合跟踪用户浏览记录
- 实现深拷贝的订单备份功能
# 黑科技:逆天字典键
class Mage:
def __init__(self, name):
self.name = name
gandalf = Mage("甘道夫")
special_dict = {gandalf: "传奇法师"}
print(special_dict[gandalf]) # 可行但需要谨慎!