[Python 基础课程]字典
字典
想象一下你正在查字典,你需要通过一个词语(键)来找到它的解释(值)。Python 的字典也是类似的概念。它是一种无序的、可变的集合,用于存储键-值(key-value)对。
键 (Key): 字典中的每个元素都有一个唯一的标识符,我们称之为键。键必须是不可变的数据类型,例如字符串、数字或元组
值 (Value): 与每个键关联的数据称为值。值可以是任何 Python 数据类型,并且值的类型可以是不同的类型
字典使用花括号 {}
来定义,每个键-值对之间用逗号 ,
分隔,键和值之间用冒号 :
连接。
让我们看一些字典的例子:
# 一个存储学生信息的字典student = {\'name\': \'Alice\', \'age\': 20, \'major\': \'Computer Science\'}# {\'name\': \'Alice\', \'age\': 20, \'major\': \'Computer Science\'}print(student)# 输出: 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\']# Aliceprint(name)# 通过键 \'age\' 访问对应的值age = student[\'age\']# 20print(age)# 如果尝试访问一个不存在的键,会引发 KeyError 错误# error = student[\'grade\'] # 这会报错!
为了避免 KeyError
,我们可以使用 get()
方法。get()
方法在键存在时返回对应的值,如果键不存在则返回 None
(或者你指定的默认值)。
student = {\'name\': \'Alice\', \'age\': 20, \'major\': \'Computer Science\'}grade = student.get(\'grade\')# Noneprint(grade)# 如果键不存在,返回 \'N/A\'grade = student.get(\'grade\', \'N/A\')# N/Aprint(grade)name = student.get(\'name\')# Aliceprint(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 Scienceprint(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}\")