在Python中,字典(Dictionary)是一种非常灵活的数据结构,用于存储键值对(key-value pairs)。每个键都是唯一的,并且与某个值相关联。字典是Python中处理映射关系(即一个键对应一个值)的内置类型。
字典在Python中通过花括号{}定义,键和值之间用冒号:分隔,键值对之间用逗号,分隔。例如:
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}
最直接的方式是通过键直接访问对应的值。如果键存在,则返回对应的值;如果键不存在,则抛出KeyError。
有一个字典person_info,包含人的基本信息,如姓名、年龄和邮箱。我们想要获取这个人的姓名。
# 定义字典
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}
# 通过键访问值
name = person_info['name']
print(f"Name: {name}") # 输出: Name: Tom
# 如果尝试访问不存在的键,会抛出KeyError
# print(person_info['phone']) # 这会抛出KeyError
get()方法提供了一种更安全的访问字典值的方式。如果键存在,则返回对应的值;如果键不存在,则返回None(或者指定的默认值)。
同样使用person_info字典,但这次我们想安全地获取邮箱,如果邮箱不存在,则返回"Unknown"。
# 定义字典
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}
# 使用get()方法访问值
email = person_info.get('email', 'Unknown')
print(f"Email: {email}") # 输出: Email: tom@example.com
# 尝试获取不存在的键,返回默认值
phone = person_info.get('phone', 'Unknown')
print(f"Phone: {phone}") # 输出: Phone: Unknown
遍历字典可以访问所有的键值对。这可以通过for循环和items()、keys()、values()方法实现。
遍历person_info字典,打印出每个人的姓名和年龄。
# 定义字典
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}
# 遍历字典的键值对
for key, value in person_info.items():
if key in ['name', 'age']: # 只打印姓名和年龄
print(f"{key}: {value}")
# 输出:
# name: Tom
# age: 30
遍历person_info字典的键,并打印出每个键。
# 定义字典
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}
# 遍历字典的键
for key in person_info:
print(key)
# 输出:
# name
# age
# email
遍历person_info字典的值,并打印出每个值。
# 定义字典
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}
# 遍历字典的值
for value in person_info.values():
print(value)
# 输出:
# Tom
# 30
# tom@example.com
从person_info字典中移除age键值对,并获取其值。
# 定义字典
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}
# 使用pop()方法移除并获取值
age = person_info.pop('age')
print(f"Age: {age}") # 输出: Age: 30
# 查看修改后的字典
print(person_info) # 输出: {'name': 'Tom', 'email': 'tom@example.com'}
注意,popitem()方法会移除并返回一个任意键值对(在Python 3.7+中,由于字典是有序的,因此它通常返回最后插入的键值对)。
# 定义字典
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}
# 使用popitem()方法移除并获取键值对
key, value = person_info.popitem()
print(f"Key: {key}, Value: {value}") # 输出可能因字典内容不同而有所差异
# 例如: Key: email, Value: tom@example.com
# 查看修改后的字典
print(person_info) # 输出将不包含被移除的键值对
虽然字典推导式不直接用于获取值,但可以用来基于现有字典创建新字典。 创建一个新字典,其键为原字典值的长度,值为原字典的键
# 定义字典
person_info = {'name': 'Tom', 'age': 30, 'email': 'tom@example.com'}
# 使用字典推导式创建新字典
new_dict = {len(str(value)): key for key, value in person_info.items()}
# 注意:由于键冲突的可能性,这里的结果可能不是预期的
# 打印新字典
print(new_dict) # 输出可能因字典内容不同而有所差异
# 例如: {3: 'age', 4: 'name', 13: 'email'}(注意:实际输出可能不同,因为字典不保证顺序)