【成人版python基础入门】第二章 字典——智慧的宝典

在这里插入图片描述

字典——智慧的宝典

在与 Python 的数据结构冒险中,我们已经学会了如何使用列表记录和管理大量的信息。现在,让我们继续探索一种更为强大的数据结构——字典。字典是一种以键值对形式存储信息的数据结构,它就像是你随身携带的智慧宝典,能够随时提供你需要的帮助。通过这篇教程,你将学会如何创建、访问、添加、删除字典中的元素,并掌握一些常用的字典操作。

字典的基本概念

字典是什么?

字典是 Python 中的一种无序集合,以键值对的形式存储数据。每个键值对都有一个唯一的键(key)和一个对应的值(value)。这就像你在一本宝典中记录了一个个知识点,每个知识点都有一个名字(键),而内容(值)可以是任何类型的数据,如字符串、数字、列表等。

想象一下,你有一本神秘的书,每一页都记录了一个知识点,每个知识点都有一个固定的编号。你可以通过编号快速查找和管理这些知识点,这本神秘的书就是 Python 中的字典。

字典的创建

创建字典非常简单,只需要用花括号 {} 把键值对包起来即可。键值对之间用冒号 : 分隔,多个键值对之间用逗号 , 分隔。

# 创建一个空字典
my_dict = {}

# 创建一个包含多个键值对的字典
fruit_prices = {
    "苹果": 5,
    "香蕉": 3,
    "橙子": 4
}

这就像你在宝典中创建了一章,记录了不同水果的价格。

访问字典元素

访问字典中的元素,只需要用方括号 [] 指定键,就能获取对应的值。

fruit_prices = {
    "苹果": 5,
    "香蕉": 3,
    "橙子": 4
}

# 访问指定键的值
print(fruit_prices["苹果"])  # 输出:5

# 判断键是否存在
if "梨" in fruit_prices:
    print(fruit_prices["梨"])
else:
    print("梨的价格没有记录。")

这就像你在宝典中查找某个知识点,用编号快速找到它。如果编号不存在,宝典会告诉你这个知识点没有记录。

添加、删除字典元素

添加键值对

添加键值对到字典中,只需要用方括号 [] 指定键,并赋予新的值。

fruit_prices = {
    "苹果": 5,
    "香蕉": 3,
    "橙子": 4
}

# 添加新的键值对
fruit_prices["梨"] = 6
print(fruit_prices)  # 输出:{'苹果': 5, '香蕉': 3, '橙子': 4, '梨': 6}

这就像你在宝典中新增了一个知识点,赋予它一个编号和内容。

修改键值对

修改字典中的键值对,只需要通过键访问元素并赋予新的值。

fruit_prices = {
    "苹果": 5,
    "香蕉": 3,
    "橙子": 4,
    "梨": 6
}

# 修改指定键的值
fruit_prices["橙子"] = 5
print(fruit_prices)  # 输出:{'苹果': 5, '香蕉': 3, '橙子': 5, '梨': 6}

这就像你在宝典中更新了一个知识点的内容。

删除键值对

删除字典中的键值对,可以使用 del 语句删除指定的键值对,或者使用 pop() 方法删除并返回指定键的值。

fruit_prices = {
    "苹果": 5,
    "香蕉": 3,
    "橙子": 5,
    "梨": 6
}

# 删除指定键值对
del fruit_prices["梨"]
print(fruit_prices)  # 输出:{'苹果': 5, '香蕉': 3, '橙子': 5}

# 删除并返回指定键的值
price = fruit_prices.pop("香蕉")
print("香蕉的价格是:", price)  # 输出:香蕉的价格是: 3
print(fruit_prices)  # 输出:{'苹果': 5, '橙子': 5}

这就像你在宝典中删除了一个知识点,或者把某个知识点的内容记录在另一张纸上,然后从宝典中删除。

常用字典操作

keys():获取所有键

keys() 方法返回一个包含字典中所有键的视图对象。

student_grades = {
    "Alice": 90,
    "Bob": 85,
    "Charlie": 95
}

keys = student_grades.keys()
print("所有学生的姓名:", list(keys))  # 输出:所有学生的姓名: ['Alice', 'Bob', 'Charlie']

这就像你在宝典中列出了所有知识点的编号。

values():获取所有值

values() 方法返回一个包含字典中所有值的视图对象。

student_grades = {
    "Alice": 90,
    "Bob": 85,
    "Charlie": 95
}

values = student_grades.values()
print("所有学生的成绩:", list(values))  # 输出:所有学生的成绩: [90, 85, 95]

这就像你在宝典中列出了所有知识点的内容。

items():获取所有键值对

items() 方法返回一个包含字典中所有键值对的视图对象,每个键值对是一个元组。

student_grades = {
    "Alice": 90,
    "Bob": 85,
    "Charlie": 95
}

items = student_grades.items()
for name, grade in items:
    print(name, "的成绩是:", grade)

输出:

Alice 的成绩是: 90
Bob 的成绩是: 85
Charlie 的成绩是: 95

这就像你在宝典中列出了所有知识点的编号和内容。

get():安全地获取值

get() 方法用于安全地获取字典中指定键的值。如果键不存在,它会返回一个默认值(可选),而不是抛出异常。

student_grades = {
    "Alice": 90,
    "Bob": 85,
    "Charlie": 95
}

# 安全地获取值
grade = student_grades.get("Dave", 0)
print("Dave 的成绩是:", grade)  # 输出:Dave 的成绩是: 0

这就像你在宝典中查找一个未知的知识点,如果找不到,宝典会给出一个默认答案,而不是告诉你查找失败。

update():更新字典

update() 方法用于更新字典中的键值对,可以传入另一个字典或键值对列表。

student_grades = {
    "Alice": 90,
    "Bob": 85,
    "Charlie": 95
}

# 更新字典
new_grades = {
    "Bob": 92,
    "Eve": 88
}
student_grades.update(new_grades)
print(student_grades)  # 输出:{'Alice': 90, 'Bob': 92, 'Charlie': 95, 'Eve': 88}

这就像你在宝典中更新了一部分内容,或者添加了新的知识点。

clear():清空字典

clear() 方法用于清空字典中的所有键值对。

student_grades = {
    "Alice": 90,
    "Bob": 85,
    "Charlie": 95
}

# 清空字典
student_grades.clear()
print(student_grades)  # 输出:{}

这就像你在宝典中删除了所有记录的内容,重新开始。

copy():复制字典

copy() 方法用于创建字典的浅拷贝。

student_grades = {
    "Alice": 90,
    "Bob": 85,
    "Charlie": 95
}

# 复制字典
another_grades = student_grades.copy()
print(another_grades)  # 输出:{'Alice': 90, 'Bob': 85, 'Charlie': 95}

这就像你在宝典中复制了一部分内容,另存为一个新的宝典。

代码样例:生成一个随机的成语接龙游戏

假设你想编写一个成语接龙游戏,通过字典存储成语及其解释。每次游戏开始时,程序会随机选择一个成语作为起点,然后用户需要依次输入成语,要求成语的首字与前一个成语的末字相同。如果输入的成语正确,程序会显示其解释;如果输入错误,程序会提示重新输入。

代码实现

import random

# 成语和其解释的字典
idiom_dict = {
    "百折不挠": "形容意志坚强,屡遭挫折而不屈服。",
    "不计前嫌": "不追究过去的怨恨。",
    "嫌贫爱富": "喜欢富人而不喜欢穷人。",
    "富可敌国": "形容非常富有。",
    "国色天香": "形容女性或花朵极其美丽。",
    "香消玉殒": "形容美女或名花的死亡或消逝。",
    "殒身不恤": "不惜牺牲自己。"
}

# 随机选择一个成语作为起点
start_idiom = random.choice(list(idiom_dict.keys()))
print("游戏开始,起点成语是:", start_idiom)

# 记录当前成语的末字
current_last_char = start_idiom[-1]

# 游戏循环
while True:
    # 用户输入下一个成语
    next_idiom = input(f"请输入一个首字为 '{current_last_char}' 的成语: ")
    
    # 判断输入的成语是否正确
    if next_idiom in idiom_dict and next_idiom[0] == current_last_char:
        print(idiom_dict[next_idiom])
        current_last_char = next_idiom[-1]
    else:
        print("输入的成语不正确或不存在,请重新输入。")
        continue
    
    # 判断是否继续游戏
    continue_game = input("继续游戏吗?(y/n): ")
    if continue_game.lower() == 'n':
        break

print("游戏结束,谢谢参与!")

代码详解

  1. 成语字典

    idiom_dict = {
        "百折不挠": "形容意志坚强,屡遭挫折而不屈服。",
        "不计前嫌": "不追究过去的怨恨。",
        "嫌贫爱富": "喜欢富人而不喜欢穷人。",
        "富可敌国": "形容非常富有。",
        "国色天香": "形容女性或花朵极其美丽。",
        "香消玉殒": "形容美女或名花的死亡或消逝。",
        "殒身不恤": "不惜牺牲自己。"
    }
    

    创建一个字典 idiom_dict,其中每个键是一个成语,对应的值是该成语的解释。

  2. 随机选择起点成语

    start_idiom = random.choice(list(idiom_dict.keys()))
    print("游戏开始,起点成语是:", start_idiom)
    

    使用 random.choice() 函数从字典的键中随机选择一个成语作为起点,并输出。

  3. 游戏循环

    current_last_char = start_idiom[-1]
    
    while True:
        # 用户输入下一个成语
        next_idiom = input(f"请输入一个首字为 '{current_last_char}' 的成语: ")
        
        # 判断输入的成语是否正确
        if next_idiom in idiom_dict and next_idiom[0] == current_last_char:
            print(idiom_dict[next_idiom])
            current_last_char = next_idiom[-1]
        else:
            print("输入的成语不正确或不存在,请重新输入。")
            continue
        
        # 判断是否继续游戏
        continue_game = input("继续游戏吗?(y/n): ")
        if continue_game.lower() == 'n':
            break
    
    • 记录当前成语的末字current_last_char 存储当前成语的末字。
    • 用户输入成语:使用 input() 函数获取用户输入的成语。
    • 判断输入的成语是否正确:通过 if 语句检查用户输入的成语是否存在于字典中,并且其首字是否与当前成语的末字相同。如果正确,输出成语的解释,并更新 current_last_char;如果不正确,提示重新输入。
    • 判断是否继续游戏:使用 if 语句判断用户是否想要继续游戏。如果输入 ‘n’,结束循环并退出游戏。
  4. 游戏结束提示

    print("游戏结束,谢谢参与!")
    

    游戏结束后,输出感谢信息。

运行结果

假设你运行了上面的代码,程序会随机选择一个成语作为起点,例如 “百折不挠”。然后,程序会提示你输入一个首字为 “挠” 的成语。例如:

游戏开始,起点成语是: 百折不挠
请输入一个首字为 '挠' 的成语: 挠痒痒
输入的成语不正确或不存在,请重新输入。
请输入一个首字为 '挠' 的成语: 不计前嫌
不追究过去的怨恨。
继续游戏吗?(y/n): y
请输入一个首字为 '嫌' 的成语: 嫌贫爱富
喜欢富人而不喜欢穷人。
继续游戏吗?(y/n): n
游戏结束,谢谢参与!

摘要

通过这一篇的学习,你已经掌握了如何使用 Python 的字典,管理你想保存的信息。字典是一种强大的数据结构,允许你以键值对的形式存储数据,就像是随身携带的智慧宝典,随时提供帮助。

  • 创建与访问:使用花括号 {} 创建字典,通过键 [] 访问字典中的值。
  • 增删字典元素:使用 [] 添加新的键值对,通过 del 语句或 pop() 方法删除指定的键值对,并使用 [] 修改键值对。
  • 常用字典操作:学会了常用的字典方法,如 keys()values()items()get()update()clear()copy()
  • 代码样例:生成了一个随机的成语接龙游戏,通过字典存储成语及其解释,展示了字典在实际应用中的强大功能。

希望这篇教程能为你与 Python 的旅途带来更多的乐趣和信心。继续前行,探索更多数据结构和编程技巧,让我们一起用 Python 编写出更多有用和有趣的应用。🔍✨

posted @   爱上编程技术  阅读(1)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示