1. 列表的“短板”:结构化数据得用“新工具”🤔
内容详解:
列表适合存“无序 / 简单序列”,但遇到 结构化数据(比如“一个人的姓名、性别、职业”)就抓瞎了——总不能用列表存成["Ford", "Male", "Researcher"],想查“职业”还得数索引(容易错!)。
所以 Python 给了三个“高级收纳工具”:
- 🗂️ 字典:存“键值对”(像“标签: 内容”),查数据不用记位置;
- 🔍 集合:自动去重的“筛子”,适合存不重复的数据集;
- 🔒 元组:不可修改的“密封数据组”,适合存固定信息。
这三个 + 列表,就是 Python 处理数据的“全能套装”!
2. 字典:键值对存储——像“带标签的抽屉”📛
关键字:字典、键值对、增删改查
内容详解:
字典是 {键: 值} 的格式,“键”是标签,“值”是内容——比如存一个人的信息:
# 创建字典:键(标签): 值(内容)person = {
"Name": "Ford Prefect",
"Gender": "Male",
"Occupation": "Researcher",
"Home Planet": "Betelgeuse Seven"
}
操作字典超方便:
- 🔍 查值:用键当“钥匙”,直接取:
print(person["Occupation"])(输出 Researcher); - ➕ 新增 / 修改:
person["Age"] = 42(新增年龄)、person["Gender"] = "Male"(修改性别); - ➖ 删除:
del person["Home Planet"](删掉家乡信息); - ⚠️ 注意:字典 不维持插入顺序(Python 3.7+ 才会保留,但别依赖这个!)。
类比:字典像“带标签的抽屉”,找东西不用翻,看标签直接拿~
3. 字典进阶:循环遍历 + 避坑技巧 ⚡
关键字 :字典遍历、KeyError、get() 方法
内容详解:
字典里数据多了,得会“批量操作”+“避坑”:
- 🔄 遍历字典 :用
.items()同时取键和值:for key, value in person.items(): print(key + ":" + value) # 逐个打印标签和内容 - ❌ 避免 KeyError:如果查不存在的键,会报错!用
get()方法兜底:# 查不存在的键,返回默认值 "未知" print(person.get("Hobby", "未知")) - 💡 字典的动态性:运行时可以随时增删键值对,超灵活(比如统计单词出现次数)。
4. 集合 + 元组:字典的“辅助工具”🛠️
关键字:集合、元组、去重 / 不可变
内容详解:
这俩是字典的“队友”,各有绝活:
- 🔍 集合:用
{}(但不是键值对),自动去重 + 支持集合运算:# 自动去重 水果 = {"苹果", "香蕉", "苹果", "橘子"} print(水果) # 输出:{"苹果", "香蕉", "橘子"} # 集合运算:找交集 喜欢的水果 = {"苹果", "草莓"} 共同喜欢 = 水果 & 喜欢的水果 print(共同喜欢) # 输出:{"苹果"}适合存“不重复的数据集”(比如班级学生名单)。
- 🔒 元组:用
(),不可修改的“数据组”——比如存“经纬度”:坐标 = (116.40, 39.90) # 北京经纬度 # 坐标[0] = 120 # 报错!元组不能改适合存“固定不变的结构化数据”(比如身份证信息)。
5. 实战:结构化数据的“真实用法”——学生信息管理 📚
关键字:实战代码、字典 + 列表 + 集合
内容详解:
结合这章工具,写个“学生信息管理”小工具:
# 用列表存多个学生(每个学生是字典)students = [{"姓名": "张三", "年龄": 18, "科目": {"数学", "英语"}},
{"姓名": "李四", "年龄": 19, "科目": {"语文", "数学"}}
]
# 遍历所有学生,打印信息
for stu in students:
print(f"姓名:{stu[' 姓名 ']},年龄:{stu[' 年龄 ']},科目:{stu[' 科目 ']}")
# 找同时选数学的学生(用集合交集)math_stu = [s for s in students if "数学" in s["科目"]]
print("选数学的学生:", [s["姓名"] for s in math_stu])
这段代码用了“列表存字典 + 字典里嵌套集合”——完美处理结构化数据,实际工作中这种组合超常用!
正文完