写点什么

Python 数据结构:字典详解(创建、访问、修改、字典方法)

  • 2024-07-16
    湖南
  • 本文字数:3271 字

    阅读完需:约 11 分钟

Python 字典详解

Python 字典(Dictionary)是一种内置的数据结构,以键值对(key-value pair)的形式存储数据。字典是一种无序的、可变的、且具有很高查找效率的数据结构。本文将详细介绍 Python 字典的创建、访问、修改及其方法,并附上一个综合详细的例子,全面展示字典在实际编程中的应用。

一、创建字典

1.1 使用花括号创建字典

最常见的创建字典的方法是使用花括号 {}。

student = dict(name="Alice", age=20, grades=[85, 90, 92])
复制代码

1.2 使用内置函数 dict()

使用 dict() 函数可以创建字典。注意,使用这种方法时,键必须是字符串。

student = dict(name="Alice", age=20, grades=[85, 90, 92])
复制代码

1.3 从键值对序列创建字典

可以从包含键值对的序列(如列表、元组)创建字典。

student = dict([("name", "Alice"), ("age", 20), ("grades", [85, 90, 92])])
复制代码

二、访问字典元素

通过键访问字典中的值。如果键不存在,会引发 KeyError。

print(student["name"])  # 输出 "Alice"print(student["age"])   # 输出 20print(student["grades"])  # 输出 [85, 90, 92]
复制代码

为了避免 KeyError,可以使用 get() 方法访问元素。如果键不存在,返回默认值 None 或自定义默认值。

print(student.get("name"))  # 输出 "Alice"print(student.get("gender"))  # 输出 Noneprint(student.get("gender", "Female"))  # 输出 "Female"
复制代码

三、修改字典

3.1 添加或更新键值对

可以通过赋值操作添加或更新字典中的键值对。如果键存在,则更新值;如果键不存在,则添加新的键值对。

student["age"] = 21  # 更新年龄student["gender"] = "Female"  # 添加性别print(student)# 输出 {'name': 'Alice', 'age': 21, 'grades': [85, 90, 92], 'gender': 'Female'}
复制代码

3.2 删除键值对

可以使用 del 关键字或 pop() 方法删除键值对。

del student["gender"]  # 删除性别print(student)# 输出 {'name': 'Alice', 'age': 21, 'grades': [85, 90, 92]}
age = student.pop("age") # 删除并返回年龄print(age) # 输出 21print(student)# 输出 {'name': 'Alice', 'grades': [85, 90, 92]}
复制代码

四、字典方法

Python 字典提供了丰富的方法,用于操作和管理键值对。

4.1 keys()

keys() 方法返回字典中所有的键。

keys = student.keys()print(keys)  # 输出 dict_keys(['name', 'grades'])
复制代码

4.2 values()

values() 方法返回字典中所有的值。

values = student.values()print(values)  # 输出 dict_values(['Alice', [85, 90, 92]])
复制代码

4.3 items()

items() 方法返回字典中所有的键值对,形式为元组。

items = student.items()print(items)  # 输出 dict_items([('name', 'Alice'), ('grades', [85, 90, 92])])
复制代码

4.4 update()

update() 方法用于合并两个字典。如果有重复的键,后面的字典值会覆盖前面的字典值。

additional_info = {"gender": "Female", "age": 21}student.update(additional_info)print(student)# 输出 {'name': 'Alice', 'grades': [85, 90, 92], 'gender': 'Female', 'age': 21}
复制代码

4.5 fromkeys()

fromkeys() 方法用于创建一个新字典,以序列中的元素为键,统一设置值。

keys = ["name", "age", "grades"]default_value = Nonenew_student = dict.fromkeys(keys, default_value)print(new_student)# 输出 {'name': None, 'age': None, 'grades': None}
复制代码

4.6 setdefault()

setdefault() 方法在字典中查找键,如果键存在则返回对应的值;如果键不存在,则插入键并设置默认值。

student.setdefault("age", 20)print(student["age"])  # 输出 21(因为键 "age" 已存在)student.setdefault("gender", "Female")print(student["gender"])  # 输出 "Female"(因为键 "gender" 不存在,设置默认值)
复制代码

4.7 clear()

clear() 方法用于清空字典,删除所有键值对。

student.clear()print(student)  # 输出 {}
复制代码

五、综合详细的例子

为了更好地理解 Python 字典的创建、访问、修改及其方法的应用,下面提供一个综合详细的例子,模拟一个简单的图书管理系统。该系统包括添加图书信息、查询图书信息、统计图书数量等功能。

class Library:    def __init__(self):        """        初始化图书馆实例,包含图书列表        """        self.books = {}
def add_book(self, title, author, year, copies): """ 添加图书信息
参数: title (str): 图书标题 author (str): 图书作者 year (int): 出版年份 copies (int): 副本数量 """ if title in self.books: self.books[title]["copies"] += copies else: self.books[title] = { "author": author, "year": year, "copies": copies }
def find_book(self, title): """ 查找图书信息
参数: title (str): 图书标题
返回: dict: 图书信息 """ return self.books.get(title, "书籍未找到")
def print_books(self): """ 打印所有图书信息 """ for title, info in self.books.items(): print(f"标题: {title}, 作者: {info['author']}, 出版年份: {info['year']}, 副本数量: {info['copies']}")
def count_books(self): """ 统计图书数量
返回: int: 图书数量 """ return len(self.books)
def update_copies(self, title, copies): """ 更新图书副本数量
参数: title (str): 图书标题 copies (int): 新的副本数量 """ if title in self.books: self.books[title]["copies"] = copies else: print("书籍未找到")
def remove_book(self, title): """ 删除图书信息
参数: title (str): 图书标题 """ if title in self.books: del self.books[title] else: print("书籍未找到")
# 创建图书馆实例library = Library()
# 添加图书信息library.add_book("Python编程", "Guido van Rossum", 1991, 5)library.add_book("学习Python", "Mark Lutz", 2013, 3)library.add_book("深入理解计算机系统", "Randal E. Bryant", 2015, 2)
# 打印所有图书信息print("所有图书信息:")library.print_books()
# 查找图书信息print("\n查找图书信息:")print(library.find_book("Python编程")) # 输出图书信息print(library.find_book("C++编程")) # 输出 "书籍未找到"
# 统计图书数量print("\n图书总数:")print(library.count_books())
# 更新图书副本数量library.update_copies("Python编程", 10)
# 删除图书信息library.remove_book("深入理解计算机系统")
# 打印更新后的图书信息print("\n更新后的图书信息:")library.print_books()
复制代码

代码运行结果:

代码说明

Library 类

  • __init__: 初始化图书馆实例,包含图书列表(字典)。

  • add_book: 添加图书信息。如果图书已存在,增加副本数量;如果图书不存在,添加新的图书信息。

  • find_book: 根据标题查找图书信息。如果图书存在,返回图书信息;如果图书不存在,返回 "书籍未找到"。

  • print_books: 打印所有图书信息。

  • count_books: 统计图书数量。

  • update_copies: 更新图书副本数量。如果图书存在,更新副本数量;如果图书不存在,输出 "书籍未找到"。

  • remove_book: 删除图书信息。如果图书存在,删除图书信息;如果图书不存在,输出 "书籍未找到"。


通过这个综合详细的例子,我们可以看到 Python 字典在实际编程中的应用。字典的灵活性和高效性使其成为处理键值对数据的首选数据结构之一。掌握字典的创建、访问、修改及其方法,是学习 Python 编程的重要一环。希望本文对您理解和应用 Python 字典有所帮助。

作者:Rjdeng

链接:https://juejin.cn/post/7390631421328031781

用户头像

欢迎关注,一起学习,一起交流,一起进步 2020-06-14 加入

公众号:做梦都在改BUG

评论

发布
暂无评论
Python数据结构:字典详解(创建、访问、修改、字典方法)_Python_我再BUG界嘎嘎乱杀_InfoQ写作社区