1 定义
字典 (Dictionary) 是用于存储键值对 (key-value pairs) 的数据类型。 字典是可变的,键必须是唯一的且不可变的 (例如字符串、数字或元组),值可以是任意类型。 可以使用花括号 {} 或 dict() 函数创建字典。
代码:
# 创建字典dict1 = {"name": "Alice", "age": 30, "city": "New York"}dict2 = dict([("name", "Bob"), ("age", 25)]) # 使用键值对列表创建print(f"字典1: {dict1}, 字典2: {dict2}")
结果:
2 访问元素
可以通过键来访问字典中的值
代码:
# 访问元素print(f"姓名: {dict1['name']}, 年龄: {dict1['age']}")
结果:
3 添加/修改元素
可以通过键来添加新的键值对,或者修改已存在的键值对。
代码:
# 添加/修改元素dict1["gender"] = "Female" # 添加新的键值对dict1["age"] = 31 # 修改已存在的键值对print(f"添加/修改元素后的字典1: {dict1}")
结果:
4 删除元素
del:删除指定键的键值对。 pop():删除指定键的键值对,并返回对应的值。 clear():清空字典中的所有键值对。
代码:
# 删除元素del dict1["city"] # 删除键 "city"print(f"del删除元素后的字典1: {dict1}")age = dict1.pop("age") # 删除键 "age" 并返回对应的值print(f"pop删除元素后的字典1: {dict1}, 删除的年龄: {age}")dict1.clear() # 清空字典print(f"clear清空后的字典1: {dict1}")
结果:
5 常用方法
keys():返回字典中所有键的集合。 values():返回字典中所有值的集合。 items():返回字典中所有键值对的集合,每个键值对表示为一个元组。 get():根据键获取值,如果键不存在,返回指定的默认值 (默认为 None),避免 KeyError 异常。
代码:
# 常用方法dict2 = {"name": "Bob", "age": 25, "city": "London"}print(f"所有键: {dict2.keys()}")print(f"所有值: {dict2.values()}")print(f"所有键值对: {dict2.items()}")print(f"获取姓名: {dict2.get('name')}, 获取性别(不存在): {dict2.get('gender', 'Unknown')}") # 使用 get() 方法避免 KeyError
结果:
6 字典推导式
代码:
# 字典推导式squares = {x: x**2 for x in range(5)} # 创建 0-4 的平方字典print(f"0-4的平方字典: {squares}")
结果:
7 案例
①根据某个条件筛选字典中的键值对
代码:
#根据某个条件筛选字典中的键值对def filter_dict(d, min_age): """ 筛选年龄大于 min_age 的人. Args: d: 待筛选的字典. min_age: 最小年龄. Returns: 筛选后的字典. """ return {name: age for name, age in d.items() if age > min_age}people = {"Alice": 30, "Bob": 25, "Charlie": 40, "David": 20}print(f"筛选年龄大于28的人: {filter_dict(people, 28)}")
结果:
②统计单词出现的频率
代码:
#统计单词出现的频率def word_frequency(text): """ 统计单词出现的频率. Args: text: 文本字符串. Returns: 单词频率字典. """ words = text.lower().split() # 转换为小写并分割成单词列表 frequency = {} for word in words: frequency[word] = frequency.get(word, 0) + 1 # 使用 get() 方法 return frequencytext = "This is a test. This is only a test."print(f"单词频率: {word_frequency(text)}")
结果:
③实现一个简单的缓存
代码:
#实现一个简单的缓存cache = {} # 使用字典作为缓存def expensive_function(n): """ 模拟一个耗时的函数. Args: n: 输入参数. Returns: 耗时的计算结果. """ if n in cache: # 检查缓存 print(f"从缓存中获取结果: {n}") return cache[n] else: print(f"计算结果: {n}") result = n * 2 # 模拟耗时计算 cache[n] = result # 存储到缓存 return resultprint(expensive_function(5))print(expensive_function(5)) # 从缓存中获取print(expensive_function(10))
结果:
7 应用场景