🐍 Python 零基础入门系列(六)答案:字典与集合实战练习讲解

📢 系列说明
这是第六篇《字典与集合——映射与去重操作》的配套答案讲解博客!

⚠️ 重要提醒:请先独立完成第六篇中的 3 个实战练习,再查看本篇答案进行核对!

📅 更新时间:2026 年 3 月 19 日

🎯 本篇内容:通讯录管理系统、词频统计工具、数据去重处理器的完整答案与详细讲解

✍️ 作者:书到用时方恨少!


📋 完整目录

┌─────────────────────────────────────────────────────────────┐
│                    本篇博客内容导航                          │
├─────────────────────────────────────────────────────────────┤
│  第一部分:实战一答案讲解                                    │
│  ├── 1. 完整代码                                             │
│  ├── 2. 核心功能讲解                                         │
│  └── 3. 知识点总结                                           │
├─────────────────────────────────────────────────────────────┤
│  第二部分:实战二答案讲解                                    │
│  ├── 4. 完整代码                                             │
│  ├── 5. 核心功能讲解                                         │
│  └── 6. 知识点总结                                           │
├─────────────────────────────────────────────────────────────┤
│  第三部分:实战三答案讲解                                    │
│  ├── 7. 完整代码                                             │
│  ├── 8. 核心功能讲解                                         │
│  └── 9. 知识点总结                                           │
├─────────────────────────────────────────────────────────────┤
│  第四部分:常见错误分析                                      │
│  ├── 10. 典型错误汇总                                        │
│  └── 11. 调试技巧                                            │
└─────────────────────────────────────────────────────────────┘

第一部分:实战一答案讲解

1. 完整代码

# ============================================
# 项目名称:通讯录管理系统
# 作者:你的名字
# 日期:2026-03-19
# 版本:1.0
# ============================================

print("=" * 60)
print("📱 通讯录管理系统")
print("=" * 60)

# 通讯录:{姓名:{"phone": 电话,"email": 邮箱}}
contacts = {}

while True:
    print("\n请选择操作:")
    print("1. 添加联系人")
    print("2. 查询联系人")
    print("3. 修改联系人")
    print("4. 删除联系人")
    print("5. 显示所有")
    print("6. 搜索联系人")
    print("0. 退出系统")
    
    choice = input("请输入选项 (0-6):")
    
    # 1. 添加联系人
    if choice == '1':
        name = input("请输入姓名:")
        
        if name in contacts:
            print(f"❌ 联系人 {name} 已存在!")
        else:
            phone = input("请输入电话:")
            email = input("请输入邮箱:")
            contacts[name] = {"phone": phone, "email": email}
            print(f"✅ 添加联系人 {name} 成功")
    
    # 2. 查询联系人
    elif choice == '2':
        name = input("请输入姓名:")
        
        if name in contacts:
            info = contacts[name]
            print(f"\n📋 联系人信息")
            print("=" * 40)
            print(f"姓名:{name}")
            print(f"电话:{info['phone']}")
            print(f"邮箱:{info['email']}")
            print("=" * 40)
        else:
            print(f"❌ 未找到联系人 {name}")
    
    # 3. 修改联系人
    elif choice == '3':
        name = input("请输入姓名:")
        
        if name not in contacts:
            print(f"❌ 未找到联系人 {name}")
        else:
            print("请输入新信息(直接回车保持不变):")
            info = contacts[name]
            
            new_phone = input(f"电话 [{info['phone']}]:")
            if new_phone:
                info['phone'] = new_phone
            
            new_email = input(f"邮箱 [{info['email']}]:")
            if new_email:
                info['email'] = new_email
            
            print(f"✅ 更新联系人 {name} 成功")
    
    # 4. 删除联系人
    elif choice == '4':
        name = input("请输入姓名:")
        
        if name in contacts:
            contacts.pop(name)
            print(f"✅ 删除联系人 {name} 成功")
        else:
            print(f"❌ 未找到联系人 {name}")
    
    # 5. 显示所有
    elif choice == '5':
        if len(contacts) == 0:
            print("📭 通讯录为空")
        else:
            print("\n" + "=" * 60)
            print("📋 通讯录列表")
            print("=" * 60)
            print(f"{'姓名':<15} {'电话':<20} {'邮箱':<25}")
            print("-" * 60)
            for name, info in contacts.items():
                print(f"{name:<15} {info['phone']:<20} {info['email']:<25}")
            print("=" * 60)
            print(f"共 {len(contacts)} 个联系人")
    
    # 6. 搜索联系人
    elif choice == '6':
        keyword = input("请输入搜索关键词:")
        found = []
        
        for name, info in contacts.items():
            if (keyword in name or 
                keyword in info['phone'] or 
                keyword in info['email']):
                found.append((name, info))
        
        if len(found) == 0:
            print(f"❌ 未找到匹配 '{keyword}' 的联系人")
        else:
            print(f"\n✅ 找到 {len(found)} 个匹配结果:")
            print("=" * 60)
            for name, info in found:
                print(f"姓名:{name}, 电话:{info['phone']}, 邮箱:{info['email']}")
            print("=" * 60)
    
    # 0. 退出
    elif choice == '0':
        print("👋 感谢使用,再见!")
        break
    
    else:
        print("❌ 无效选项,请重新输入!")

2. 核心功能讲解

🔍 数据结构设计

# 通讯录:{姓名:{"phone": 电话,"email": 邮箱}}
contacts = {}

讲解要点

  • 使用字典嵌套字典的结构
  • 外层字典:姓名 → 联系人信息
  • 内层字典:包含电话和邮箱
  • 姓名为键,保证唯一性

为什么这样设计

┌─────────────────────────────────────────────────────────────┐
│                    数据结构选择                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ✅ 使用字典(而不是列表)                                   │
│     • 查找速度快 O(1)                                       │
│     • 姓名天然唯一,适合作为键                              │
│     • 易于扩展(可添加更多字段)                            │
│                                                             │
│  ✅ 嵌套字典(而不是元组)                                   │
│     • 字段有明确名称(phone/email)                         │
│     • 易于修改单个字段                                      │
│     • 代码可读性更好                                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

🔍 添加联系人

if name in contacts:
    print(f"❌ 联系人 {name} 已存在!")
else:
    phone = input("请输入电话:")
    email = input("请输入邮箱:")
    contacts[name] = {"phone": phone, "email": email}
    print(f"✅ 添加联系人 {name} 成功")

讲解要点

  • 使用 in 检查键是否存在
  • 避免重复添加
  • 字典赋值创建新联系人

知识点:字典键的唯一性、in 操作符


🔍 修改联系人

if name not in contacts:
    print(f"❌ 未找到联系人 {name}")
else:
    info = contacts[name]
    
    new_phone = input(f"电话 [{info['phone']}]:")
    if new_phone:
        info['phone'] = new_phone
    
    new_email = input(f"邮箱 [{info['email']}]:")
    if new_email:
        info['email'] = new_email

讲解要点

  • 显示当前值作为提示 [当前值]
  • 空输入表示保持不变
  • 直接修改字典的值

知识点:字典值的修改、空字符串判断


🔍 搜索联系人

keyword = input("请输入搜索关键词:")
found = []

for name, info in contacts.items():
    if (keyword in name or 
        keyword in info['phone'] or 
        keyword in info['email']):
        found.append((name, info))

讲解要点

  • 遍历所有联系人
  • 在姓名、电话、邮箱中搜索关键词
  • 使用 or 连接多个条件
  • 结果存入列表

知识点:字典遍历、字符串包含判断、列表收集结果


3. 知识点总结

┌─────────────────────────────────────────────────────────────┐
│                    实战一知识点                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ✅ 字典嵌套                                                  │
│     • 字典的值可以是另一个字典                              │
│     • 适合存储结构化数据                                    │
│                                                             │
│  ✅ 字典操作                                                  │
│     • in/not in 检查键存在性                                │
│     • 字典赋值添加/修改                                     │
│     • pop() 删除键值对                                      │
│     • items() 遍历键值对                                    │
│                                                             │
│  ✅ 字符串操作                                                │
│     • in 判断子字符串                                       │
│     • 格式化输出                                            │
│                                                             │
│  ✅ 用户交互                                                  │
│     • 菜单循环                                              │
│     • 条件输入处理                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

第二部分:实战二答案讲解

4. 完整代码

# ============================================
# 项目名称:词频统计工具
# 作者:你的名字
# 日期:2026-03-19
# 版本:1.0
# ============================================

print("=" * 60)
print("📊 词频统计工具")
print("=" * 60)

# 停用词列表(常见的无意义词)
stop_words = {"的", "了", "在", "是", "我", "有", "和", "就", "不", "人", 
              "都", "一", "一个", "上", "也", "很", "到", "说", "要", "去",
              "你", "会", "着", "没有", "看", "好", "自己", "这"}

while True:
    print("\n请选择操作:")
    print("1. 统计词频")
    print("2. 显示 Top N")
    print("3. 清空数据")
    print("0. 退出系统")
    
    choice = input("请输入选项 (0-3):")
    
    # 1. 统计词频
    if choice == '1':
        text = input("请输入文本内容:")
        
        # 简单分词(按空格和标点)
        for char in ",。!?;:、\"'()()[]{}《》<>":
            text = text.replace(char, " ")
        
        words = text.split()
        
        # 统计词频
        word_count = {}
        for word in words:
            if word in stop_words or len(word) == 1:
                continue
            
            if word in word_count:
                word_count[word] += 1
            else:
                word_count[word] = 1
        
        # 显示结果
        if len(word_count) == 0:
            print("📭 没有可统计的词")
        else:
            print("\n" + "=" * 60)
            print("📊 词频统计结果")
            print("=" * 60)
            print(f"{'词语':<15} {'出现次数':<10}")
            print("-" * 60)
            
            # 按词频排序
            sorted_words = sorted(word_count.items(), 
                                  key=lambda x: x[1], 
                                  reverse=True)
            
            for word, count in sorted_words:
                print(f"{word:<15} {count:<10}")
            
            print("=" * 60)
            print(f"共统计 {len(word_count)} 个不同词语")
    
    # 2. 显示 Top N
    elif choice == '2':
        text = input("请输入文本内容:")
        n = int(input("显示前几个高频词:"))
        
        # 处理文本
        for char in ",。!?;:、\"'()()[]{}《》<>":
            text = text.replace(char, " ")
        words = text.split()
        
        # 统计
        word_count = {}
        for word in words:
            if word in stop_words or len(word) == 1:
                continue
            word_count[word] = word_count.get(word, 0) + 1
        
        if len(word_count) == 0:
            print("📭 没有可统计的词")
        else:
            sorted_words = sorted(word_count.items(), 
                                  key=lambda x: x[1], 
                                  reverse=True)
            top_n = sorted_words[:n]
            
            print("\n" + "=" * 60)
            print(f"🏆 Top {n} 高频词")
            print("=" * 60)
            for i, (word, count) in enumerate(top_n, 1):
                bar = "█" * count
                print(f"{i}. {word:<10} {count:>3}次 {bar}")
            print("=" * 60)
    
    # 3. 清空数据
    elif choice == '3':
        print("✅ 数据已清空")
    
    # 0. 退出
    elif choice == '0':
        print("👋 感谢使用,再见!")
        break
    
    else:
        print("❌ 无效选项,请重新输入!")

5. 核心功能讲解

🔍 停用词集合

stop_words = {"的", "了", "在", "是", "我", "有", "和", "就", "不", "人", 
              "都", "一", "一个", "上", "也", "很", "到", "说", "要", "去",
              "你", "会", "着", "没有", "看", "好", "自己", "这"}

讲解要点

  • 使用集合存储停用词
  • 集合查找速度快 O(1)
  • 自动去重,无需担心重复

为什么用集合而不是列表

┌─────────────────────────────────────────────────────────────┐
│                    集合 vs 列表                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  集合 { }                                                    │
│  ├── 查找速度 O(1) ✅                                       │
│  ├── 自动去重 ✅                                            │
│  └── 适合成员检测 ✅                                        │
│                                                             │
│  列表 [ ]                                                    │
│  ├── 查找速度 O(n) ❌                                       │
│  ├── 可能重复 ❌                                            │
│  └── 适合有序数据 ✅                                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

🔍 文本预处理

for char in ",。!?;:、\"'()()[]{}《》<>":
    text = text.replace(char, " ")

words = text.split()

讲解要点

  • 替换所有标点为空格
  • 使用 split() 分割成单词列表
  • 简单但有效的分词方法

知识点:字符串替换、列表分割


🔍 词频统计(两种写法)

写法一:if-else

word_count = {}
for word in words:
    if word in stop_words or len(word) == 1:
        continue
    
    if word in word_count:
        word_count[word] += 1
    else:
        word_count[word] = 1

写法二:get() 方法

word_count = {}
for word in words:
    if word in stop_words or len(word) == 1:
        continue
    
    word_count[word] = word_count.get(word, 0) + 1

讲解要点

  • 两种写法等价
  • get(word, 0) 更简洁
  • 键不存在时返回默认值 0

知识点:字典统计的经典模式


🔍 排序显示

sorted_words = sorted(word_count.items(), 
                      key=lambda x: x[1], 
                      reverse=True)

讲解要点

  • items() 获取键值对列表
  • key=lambda x: x[1] 按值(词频)排序
  • reverse=True 降序排列

知识点sorted() 函数、lambda 表达式、字典排序


🔍 Top N 可视化

for i, (word, count) in enumerate(top_n, 1):
    bar = "█" * count
    print(f"{i}. {word:<10} {count:>3}次 {bar}")

讲解要点

  • enumerate() 添加序号
  • 字符串乘法创建进度条
  • 格式化对齐输出

知识点:字符串乘法、格式化输出


6. 知识点总结

┌─────────────────────────────────────────────────────────────┐
│                    实战二知识点                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ✅ 集合应用                                                  │
│     • 停用词快速查找                                        │
│     • O(1) 成员检测                                         │
│                                                             │
│  ✅ 字典统计                                                  │
│     • 词频计数                                              │
│     • get() 默认值                                          │
│                                                             │
│  ✅ 字符串处理                                                │
│     • 标点替换                                              │
│     • 分割成单词                                            │
│                                                             │
│  ✅ 排序与切片                                                │
│     • sorted() 排序                                         │
│     • [:n] 取 Top N                                         │
│                                                             │
│  ✅ 可视化输出                                                │
│     • 进度条效果                                            │
│     • 格式化对齐                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

第三部分:实战三答案讲解

7. 完整代码

# ============================================
# 项目名称:数据去重处理器
# 作者:你的名字
# 日期:2026-03-19
# 版本:1.0
# ============================================

print("=" * 60)
print("🔄 数据去重处理器")
print("=" * 60)

while True:
    print("\n请选择操作:")
    print("1. 简单去重(集合)")
    print("2. 保持顺序去重")
    print("3. 找出重复元素")
    print("4. 统计重复次数")
    print("5. 集合运算")
    print("0. 退出系统")
    
    choice = input("请输入选项 (0-5):")
    
    # 1. 简单去重
    if choice == '1':
        data_input = input("请输入数据(用空格分隔):")
        data = data_input.split()
        
        unique = set(data)
        
        print("\n" + "=" * 60)
        print("📊 去重结果")
        print("=" * 60)
        print(f"原始数据:{data}")
        print(f"原始数量:{len(data)}")
        print(f"去重后:{list(unique)}")
        print(f"去重数量:{len(unique)}")
        print(f"移除重复:{len(data) - len(unique)} 个")
        print("=" * 60)
    
    # 2. 保持顺序去重
    elif choice == '2':
        data_input = input("请输入数据(用空格分隔):")
        data = data_input.split()
        
        seen = set()
        unique_ordered = []
        for item in data:
            if item not in seen:
                seen.add(item)
                unique_ordered.append(item)
        
        print("\n" + "=" * 60)
        print("📊 保持顺序去重结果")
        print("=" * 60)
        print(f"原始数据:{data}")
        print(f"去重后:{unique_ordered}")
        print(f"移除重复:{len(data) - len(unique_ordered)} 个")
        print("=" * 60)
    
    # 3. 找出重复元素
    elif choice == '3':
        data_input = input("请输入数据(用空格分隔):")
        data = data_input.split()
        
        seen = set()
        duplicates = set()
        for item in data:
            if item in seen:
                duplicates.add(item)
            else:
                seen.add(item)
        
        print("\n" + "=" * 60)
        print("📊 重复元素")
        print("=" * 60)
        if len(duplicates) == 0:
            print("✅ 没有重复元素")
        else:
            print(f"重复元素:{list(duplicates)}")
            print(f"重复元素数量:{len(duplicates)}")
        print("=" * 60)
    
    # 4. 统计重复次数
    elif choice == '4':
        data_input = input("请输入数据(用空格分隔):")
        data = data_input.split()
        
        count_dict = {}
        for item in data:
            count_dict[item] = count_dict.get(item, 0) + 1
        
        duplicates = {k: v for k, v in count_dict.items() if v > 1}
        
        print("\n" + "=" * 60)
        print("📊 重复次数统计")
        print("=" * 60)
        print(f"{'元素':<15} {'出现次数':<10}")
        print("-" * 60)
        
        sorted_items = sorted(duplicates.items(), 
                              key=lambda x: x[1], 
                              reverse=True)
        
        for item, count in sorted_items:
            bar = "█" * count
            print(f"{item:<15} {count:<10} {bar}")
        
        if len(duplicates) == 0:
            print("✅ 没有重复元素")
        print("=" * 60)
    
    # 5. 集合运算
    elif choice == '5':
        print("\n请输入两个集合:")
        data1 = input("集合 1(用空格分隔):").split()
        data2 = input("集合 2(用空格分隔):").split()
        
        set1 = set(data1)
        set2 = set(data2)
        
        print("\n" + "=" * 60)
        print("📊 集合运算结果")
        print("=" * 60)
        print(f"集合 1: {set1}")
        print(f"集合 2: {set2}")
        print("-" * 60)
        print(f"交集:{set1 & set2}")
        print(f"并集:{set1 | set2}")
        print(f"差集 (1-2): {set1 - set2}")
        print(f"差集 (2-1): {set2 - set1}")
        print(f"对称差集:{set1 ^ set2}")
        print("=" * 60)
    
    # 0. 退出
    elif choice == '0':
        print("👋 感谢使用,再见!")
        break
    
    else:
        print("❌ 无效选项,请重新输入!")

8. 核心功能讲解

🔍 简单去重

data = data_input.split()
unique = set(data)

讲解要点

  • set() 直接去重
  • 最简单的方法
  • ⚠️ 不保持原始顺序

知识点:集合的基本去重功能


🔍 保持顺序去重

seen = set()
unique_ordered = []
for item in data:
    if item not in seen:
        seen.add(item)
        unique_ordered.append(item)

讲解要点

  • 使用集合 seen 记录已见元素
  • 使用列表 unique_ordered 保持顺序
  • 集合用于快速查找,列表用于保持顺序

为什么这样设计

┌─────────────────────────────────────────────────────────────┐
│                    保持顺序去重算法                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  输入:[1, 2, 2, 3, 1, 4]                                   │
│                                                             │
│  步骤 1: item=1, seen={1}, result=[1]                       │
│  步骤 2: item=2, seen={1,2}, result=[1,2]                   │
│  步骤 3: item=2, 已在 seen 中,跳过                          │
│  步骤 4: item=3, seen={1,2,3}, result=[1,2,3]               │
│  步骤 5: item=1, 已在 seen 中,跳过                          │
│  步骤 6: item=4, seen={1,2,3,4}, result=[1,2,3,4]           │
│                                                             │
│  输出:[1, 2, 3, 4]  ✅ 保持了原始顺序                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

知识点:集合 + 列表组合使用


🔍 找出重复元素

seen = set()
duplicates = set()
for item in data:
    if item in seen:
        duplicates.add(item)
    else:
        seen.add(item)

讲解要点

  • 两个集合:seen 记录所有,duplicates 记录重复
  • 第二次出现时加入 duplicates
  • 自动去重,重复多次只记录一次

知识点:多集合协作


🔍 统计重复次数

count_dict = {}
for item in data:
    count_dict[item] = count_dict.get(item, 0) + 1

duplicates = {k: v for k, v in count_dict.items() if v > 1}

讲解要点

  • 字典统计每个元素出现次数
  • 字典推导式过滤出重复的
  • 按次数排序显示

知识点:字典统计、字典推导式、条件过滤


🔍 集合运算

set1 = set(data1)
set2 = set(data2)

print(f"交集:{set1 & set2}")
print(f"并集:{set1 | set2}")
print(f"差集 (1-2): {set1 - set2}")
print(f"差集 (2-1): {set2 - set1}")
print(f"对称差集:{set1 ^ set2}")

讲解要点

  • & 交集:共同元素
  • | 并集:所有元素
  • - 差集:A 有 B 无
  • ^ 对称差集:只在一个中

知识点:集合的数学运算


9. 知识点总结

┌─────────────────────────────────────────────────────────────┐
│                    实战三知识点                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ✅ 集合去重                                                  │
│     • set() 直接去重                                        │
│     • 保持顺序的去重算法                                    │
│                                                             │
│  ✅ 集合查找                                                  │
│     • in 操作符 O(1)                                        │
│     • 多集合协作                                            │
│                                                             │
│  ✅ 字典统计                                                  │
│     • 计数模式                                              │
│     • 字典推导式过滤                                        │
│                                                             │
│  ✅ 集合运算                                                  │
│     • 交/并/差/对称差                                       │
│     • 运算符和方法两种写法                                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

第四部分:常见错误分析

10. 典型错误汇总

❌ 错误 1:用列表存储停用词

# ❌ 错误 - 查找慢
stop_words = ["的", "了", "在", "是", "我"]
if word in stop_words:  # O(n) 查找
    continue

# ✅ 正确 - 查找快
stop_words = {"的", "了", "在", "是", "我"}
if word in stop_words:  # O(1) 查找
    continue

❌ 错误 2:直接 set() 去重后以为保持顺序

# ❌ 错误 - 集合无序
data = [3, 1, 2, 1, 3]
unique = set(data)
print(list(unique))  # 顺序不确定!

# ✅ 正确 - 保持顺序
seen = set()
unique_ordered = []
for item in data:
    if item not in seen:
        seen.add(item)
        unique_ordered.append(item)

❌ 错误 3:字典键不存在直接访问

# ❌ 错误 - 可能 KeyError
word_count[word] += 1  # word 不存在时报错

# ✅ 正确 - 使用 get()
word_count[word] = word_count.get(word, 0) + 1

# 或
if word in word_count:
    word_count[word] += 1
else:
    word_count[word] = 1

❌ 错误 4:嵌套字典访问错误

# ❌ 错误 - 键不存在
contacts[name]["phone"]  # name 不存在时报错

# ✅ 正确 - 先检查
if name in contacts:
    print(contacts[name]["phone"])
else:
    print("联系人不存在")

❌ 错误 5:集合运算混淆

set_a = {1, 2, 3}
set_b = {3, 4, 5}

# 差集方向容易搞混
print(set_a - set_b)  # {1, 2} - A 有 B 无
print(set_b - set_a)  # {4, 5} - B 有 A 无

# 对称差集
print(set_a ^ set_b)  # {1, 2, 4, 5} - 只在一个中

11. 调试技巧

🔍 技巧 1:打印中间结果

# 查看字典内容
print(f"当前字典:{word_count}")

# 查看集合内容
print(f"已见元素:{seen}")

# 查看列表长度
print(f"数据量:{len(data)}")

🔍 技巧 2:验证数据类型

print(f"类型:{type(contacts)}")  # <class 'dict'>
print(f"类型:{type(stop_words)}")  # <class 'set'>
print(f"类型:{type(unique_ordered)}")  # <class 'list'>

🔍 技巧 3:小数据测试

# 先用小数据验证逻辑
test_data = ["a", "b", "a", "c", "b"]
# 预期去重后:["a", "b", "c"]
# 预期重复:{"a", "b"}

📝 总结与提升建议

本篇核心知识点回顾

┌─────────────────────────────────────────────────────────────┐
│                    全部实战知识点总览                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  字典应用:                                                  │
│  ├── 嵌套字典存储结构化数据                                 │
│  ├── 字典统计(词频/次数)                                  │
│  ├── 字典推导式过滤                                         │
│  └── get() 安全访问                                         │
│                                                             │
│  集合应用:                                                  │
│  ├── 快速成员检测                                           │
│  ├── 数据去重                                               │
│  ├── 保持顺序去重算法                                       │
│  └── 集合数学运算                                           │
│                                                             │
│  综合技巧:                                                  │
│  ├── 字典 + 集合组合使用                                    │
│  ├── 排序与切片                                             │
│  ├── 格式化输出                                             │
│  └── 用户交互设计                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

💡 提升建议

┌─────────────────────────────────────────────────────────────┐
│                    下一步提升建议                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1️⃣ 扩展功能                                                 │
│     • 通讯录添加分组功能                                    │
│     • 词频统计添加导出功能                                  │
│     • 去重处理器添加文件读写                                │
│                                                             │
│  2️⃣ 优化代码                                                 │
│     • 使用 Counter 简化词频统计                             │
│     • 添加数据持久化(保存到文件)                          │
│     • 添加输入验证                                          │
│                                                             │
│  3️⃣ 组合使用                                                 │
│     • 将三个实战组合成完整项目                              │
│     • 创建个人数据管理工具                                  │
│                                                             │
│  4️⃣ 准备下一篇                                               │
│     • 复习字典和集合的所有方法                              │
│     • 预习函数的概念                                        │
│     • 思考如何将代码模块化                                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

📅 完整系列更新计划

┌─────────────────────────────────────────────────────────────┐
│          🐍 Python 零基础入门系列 · 完整规划(12 篇版)         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  📌 第一篇:Python 认知 + 环境搭建 + 基础语法                │
│      ✅ 已完成                                               │
│                                                             │
│  📌 第二篇:常用运算符完全详解                               │
│      ✅ 已完成                                               │
│                                                             │
│  📌 第三篇:流程控制——条件判断与循环结构                     │
│      ✅ 已完成                                               │
│                                                             │
│  📌 第四篇:字符串常用操作详解                               │
│      ✅ 已完成                                               │
│                                                             │
│  📌 第五篇:列表与元组——序列操作全解析                       │
│      ✅ 已完成                                               │
│                                                             │
│  📌 第六篇:字典与集合——映射与去重操作                       │
│      ✅ 已完成                                               │
│                                                             │
│  📌 第六篇答案(本篇):字典与集合实战答案讲解               │
│      ✅ 已完成                                               │
│                                                             │
│  📌 第七篇:函数基础知识(上)                               │
│      ✅ 已完成                                               │
│                                                             │
│  📌 第七篇答案:函数基础实战答案讲解                         │
│      ✅ 已完成                                               │
│                                                             │
│  📌 第八篇:函数基础知识(下)                               │
│      🔜 敬请期待                                             │
│                                                             │
│  📌 第九篇:函数进阶知识                                     │
│      🔜 敬请期待                                             │
│                                                             │
│  📌 第十篇:闭包和装饰器                                     │
│      🔜 敬请期待                                             │
│                                                             │
│  📌 第十一篇:模块和包                                       │
│      🔜 敬请期待                                             │
│                                                             │
│  📌 第十二篇及后续:更多进阶内容                             │
│      🔜 敬请期待                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

📊 系列进度可视化

进度条:████████████████████████░░ 7/12 完成
 
✅ ✅ ✅ ✅ ✅ ✅ ✅ 🔜 🔜 🔜 🔜 🔜

💬 结语

"字典和集合是 Python 数据处理的利器,掌握它们,你的代码会更高效、更优雅!"

恭喜你完成了第六篇的练习和答案学习!现在你应该:

  • ✅ 理解了字典嵌套的使用方法
  • ✅ 掌握了集合的去重和运算功能
  • ✅ 能够编写实用的数据管理程序
  • ✅ 了解了常见错误和调试技巧

下一步建议

  1. 对比自己的代码和答案,找出差异
  2. 理解答案中的优化点
  3. 尝试扩展功能,添加自己的想法
  4. 继续学习第七篇——函数基础知识!

记住数据结构选得好,代码效率高十倍!


📅 更新时间:2026 年 3 月 19 日
✍️ 作者:书到用时方恨少! | 专注 Python 教学与 AI 技术分享
💌 如有疑问,欢迎在评论区留言讨论!

如果这份答案讲解对你有帮助,请点赞👍、收藏⭐、转发🔄,让更多的小伙伴一起进步!


📢 系列文章索引

篇数 主题 状态 链接
第一篇 Python 认知 + 环境搭建 + 基础语法 ✅ 已完成 点击查看
第二篇 常用运算符完全详解 ✅ 已完成 点击查看
第三篇 流程控制——条件判断与循环结构 ✅ 已完成 点击查看
第四篇 字符串常用操作详解 ✅ 已完成 点击查看
第五篇 列表与元组——序列操作全解析 ✅ 已完成 点击查看
第六篇 字典与集合——映射与去重操作 ✅ 已完成 点击查看
第六篇答案 字典与集合实战答案讲解 ✅ 已完成 当前文章
第七篇 函数基础知识(上) ✅ 已完成 点击查看
第七篇答案 函数基础实战答案讲解 🔜 敬请期待 敬请期待
第八篇 函数基础知识(下) 🔜 敬请期待 敬请期待
第九篇 函数进阶知识 🔜 敬请期待 敬请期待
第十篇 闭包和装饰器 🔜 敬请期待 敬请期待
第十一篇 模块和包 🔜 敬请期待 敬请期待
第十二篇 更多进阶内容 🔜 敬请期待 敬请期待

🔔 订阅提醒:关注我,不错过每一篇更新!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐