摘要:在本节中,你将了解Python中的字典类型,它允许你创建一个键值对的集合。
Python字典类型简介
Python字典是一个键值对的集合,其中每个键都与一个值相关联。
键值对中的值可以是 数字、字符串、列表、元组,甚至是另一个字典。
实际上,你可以使用Python中任何有效的数据类型作为键值对中的值。
键值对中的键必须是不可变的。换句话说,键不能被更改,例如,数字、字符串、元组等。
Python使用花括号 {}
来定义一个字典。在花括号内,你可以放置零个、一个或多个键值对。
以下示例定义了一个空字典:
empty_dict = {}
通常,你会在循环(无论是 for循环 还是 while循环)之前定义一个空字典。然后在循环内部,向字典中添加键值对。
要查看一个字典的类型,可以使type()
函数,如下所示:
empty_dict = {}
print(type(empty_dict))
输出:
<class 'dict'>
以下示例定义了一个包含一些键值对的字典:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
这个名person
的字典有五个键值对,它们分别代表名字、姓氏、年龄、最喜欢的颜色以及活跃状态。
访问字典中的元素
要从字典中通过键来访问对应的值,你可以使用方括号表示法或 get()
方法。
1)使用方括号表示法
要访问与某个键关联的值,你需将该键放在方括号内:
dict[key]
以下展示了如何获取 person
字典中与键 first_name
和 last_name
相关联的值:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
print(person['first_name'])
print(person['last_name'])
输出:
John
Doe
2)使用get()方法
如果你尝试访问一个不存在的键,就会得到一个错误。例如:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
ssn = person['ssn']
错误:
Traceback (most recent call last):
File "dictionary.py", line 15, in <module>
ssn = person['ssn']
KeyError: 'ssn'
为了避免这种错误,你可以使用字典的 get()
方法:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
ssn = person.get('ssn')
print(ssn)
输出:
None
如果键不存在get()
方法会返回 None
,而不是抛出 KeyError
异常。请注意None
表示不存在任何值。
当键不存在时get()
方法还可以通过将默认值作为第二个参数传入来返回该默认值。
以下示例中,如果 person
字典中不存在 ssn
键,就会返回字符串 '000-00-0000'
:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
ssn = person.get('ssn', '000-00-0000')
print(ssn)
输出:
000-00-0000
添加键值对
由于字典具有动态结构,你可以在任何时候向其中添加新的键值对。
要向字典中添加一个新的键值对,你需要指定字典的名称,接着在方括号中写上新的键,并赋予其新的值。
以下示例向 person
字典中添加了一个新的键值对:
person['gender'] = 'Female'
修改键值对
要修改与某个键相关联的值,你需要指定字典名称,将该键放在方括号中,并赋予与该键相关联的新值:
dict[key] = new_value
以下示例修改了 person
字典中与 age
键相关联的值:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
person['age'] = 26
print(person)
输出:
{'first_name': 'John', 'last_name': 'Doe', 'age': 26, 'favorite_colors': ['blue', 'green'], 'active': True}
删除键值对
要通过键来删除一个键值对,你可以使用 del
语句:
del dict[key]
在这个语法中,你要指定字典的名称以及你想要删除的键。
以下示例从 person
字典中删除了键 'active'
:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
del person['active']
print(person)
输出:
{'first_name': 'John', 'last_name': 'Doe', 'age': 25, 'favorite_colors': ['blue', 'green']}
遍历字典
要检查一个字典,你可以使用 for
循环来遍历它的键值对、键或者值。
请注意,自 Python 3.7 版本起,当你遍历一个字典时,你获取到的键值对的顺序与你插入它们时的顺序是相同的。
遍历字典中所有键值对
Python字典提供了一个名为 items()
的方法,该方法会返回一个对象,这个对象包含一个列表,列表中的元素是以元组形式呈现的键值对。
例如:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
print(person.items())
输出:
dict_items([('first_name', 'John'), ('last_name', 'Doe'), ('age', 25), ('favorite_colors', ['blue', 'green']), ('active', True)])
要遍历字典中的所有键值对,你可以使用一个 for
循环,并使用两个变量 key
和 value
来解包列表中的每个元组:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
for key, value in person.items():
print(f"{key}: {value}")
输出:
first_name: John
last_name: Doe
age: 25
favorite_colors: ['blue', 'green']
active: True
请注意,在 for
循环中你可以使用任何变量名,不一定非得是 key
和 value
。
遍历字典中的所有键
有时候,你可能只想遍历字典中的所有键。在这种情况下,你可以使用 for
循环结合 keys()
方法来实现。
keys()
方法会返回一个对象,该对象包含字典中所有键的列表。
例如:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
for key in person.keys():
print(key)
输出:
first_name
last_name
age
favorite_colors
active
实际上,当遍历一个字典时,遍历所有键是默认行为。因此,你无需使用 keys()
方法。
下面的代码与上述示例中的代码会返回相同的输出:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
for key in person:
print(key)
遍历字典中所有值
values()
方法会返回一个仅包含值的列表,其中不包含任何键。
要遍历字典中的所有值,你可以使用 for
循环结合 values()
方法:
person = {
'first_name': 'John',
'last_name': 'Doe',
'age': 25,
'favorite_colors': ['blue', 'green'],
'active': True
}
for value in person.values():
print(value)
输出:
John
Doe
25
['blue', 'green']
True
总结
Python字典是一个键值对的集合,其中每个键都有一个与之关联的值。
使用方括号或
get()
方法通过键来访问对应的值。使用
del
语句根据键从字典中删除一个键值对。使用
for
循环遍历字典中的键、值以及键值对。