[Python 基础课程]字典
字典
想象一下你正在查字典,你需要通过一个词语(键)来找到它的解释(值)。Python 的字典也是类似的概念。它是一种无序的、可变的集合,用于存储键-值(key-value)对。
键 (Key): 字典中的每个元素都有一个唯一的标识符,我们称之为键。键必须是不可变的数据类型,例如字符串、数字或元组
值 (Value): 与每个键关联的数据称为值。值可以是任何 Python 数据类型,并且值的类型可以是不同的类型
字典使用花括号 {}
来定义,每个键-值对之间用逗号 ,
分隔,键和值之间用冒号 :
连接。
让我们看一些字典的例子:
# 一个存储学生信息的字典
student = {'name': 'Alice', 'age': 20, 'major': 'Computer Science'}
# {'name': 'Alice', 'age': 20, 'major': 'Computer Science'}
print(student)
# 输出: <class 'dict'>
print(type(student))# 一个存储商品价格的字典
prices = {'apple': 1.5, 'banana': 0.75, 'orange': 1.0}
# {'apple': 1.5, 'banana': 0.75, 'orange': 1.0}
print(prices)# 键可以是数字
grades = {90: 'A', 80: 'B', 70: 'C'}
# {90: 'A', 80: 'B', 70: 'C'}
print(grades)# 值可以是列表或其他的字典,值的类型可以是不同的类型
data = {'name': 'Bob', 'courses': ['Math', 'Physics'], 'address': {'city': 'New York', 'zip': '10001'}}
# {'name': 'Bob', 'courses': ['Math', 'Physics'], 'address': {'city': 'New York', 'zip': '10001'}}
print(data)# 空字典
empty_dict = {}
# {}
print(empty_dict)
关键点:
- 字典中的元素是无序的。这意味着当你打印一个字典时,元素的顺序可能与你定义时的顺序不同。你不应该依赖字典中元素的特定顺序
- 键必须是唯一的。如果在同一个字典中出现重复的键,后面的键-值对会覆盖前面的,值可以是不同的类型
访问字典中的值
与列表和元组使用索引来访问元素不同,我们使用键来访问字典中对应的值。
student = {'name': 'Alice', 'age': 20, 'major': 'Computer Science'}# 通过键 'name' 访问对应的值
name = student['name']
# Alice
print(name)# 通过键 'age' 访问对应的值
age = student['age']
# 20
print(age)# 如果尝试访问一个不存在的键,会引发 KeyError 错误
# error = student['grade'] # 这会报错!
为了避免 KeyError
,我们可以使用 get()
方法。get()
方法在键存在时返回对应的值,如果键不存在则返回 None
(或者你指定的默认值)。
student = {'name': 'Alice', 'age': 20, 'major': 'Computer Science'}grade = student.get('grade')
# None
print(grade)# 如果键不存在,返回 'N/A'
grade = student.get('grade', 'N/A')
# N/A
print(grade)name = student.get('name')
# Alice
print(name)
修改字典
字典是可变的,这意味着我们可以在创建后修改字典的内容。
添加新的键值对:
student = {'name': 'Alice', 'age': 20}
student['major'] = 'Computer Science'
# {'name': 'Alice', 'age': 20, 'major': 'Computer Science'}
print(student)
修改已有的值:
student = {'name': 'Alice', 'age': 20, 'major': 'Computer Science'}
student['age'] = 21
# {'name': 'Alice', 'age': 21, 'major': 'Computer Science'}
print(student)
删除键值对可以使用 del
关键字或者 pop()
方法:
student = {'name': 'Alice', 'age': 21, 'major': 'Computer Science'}
del student['age']
# {'name': 'Alice', 'major': 'Computer Science'}
print(student)
student = {'name': 'Alice', 'major': 'Computer Science'}
removed_major = student.pop('major')
# {'name': 'Alice'}
print(student)
# Computer Science
print(removed_major)
使用 clear()
方法可以移除字典中的所有元素:
student = {'name': 'Alice', 'major': 'Computer Science'}
student.clear()
# {}
print(student)
遍历字典
第一种是调用 keys 方法获取到所有的 key,遍历 key 拿到 key 对应的值:
my_dict = {"name": "Alice", "age": 30, "city": "New York"}# 使用 keys() 方法获取所有的键
keys = my_dict.keys()
print(f"所有的键:{keys}")# 遍历所有的键,并获取每个键对应的值
print("\n遍历键和值:")
for key in keys:value = my_dict[key]print(f"键: {key}, 值: {value}")
第二种是直接对第一种进行简写:
my_dict = {"name": "Alice", "age": 30, "city": "New York"}# 更简洁的遍历方式(直接遍历字典的键)
print("\n更简洁的遍历方式:")
for key in my_dict:value = my_dict[key]print(f"键: {key}, 值: {value}")
第三种是直接调用 items 方法同时获取到 key 和 value:
my_dict = {"name": "Alice", "age": 30, "city": "New York"}for key, value in my_dict.items():print(f"键: {key}, 值: {value}")