结构化数据——处理结构化数据:Python的“高级收纳套装” 🧰

358次阅读

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])

这段代码用了“列表存字典 + 字典里嵌套集合”——完美处理结构化数据,实际工作中这种组合超常用!

正文完
 0