Python 创建字典
在 Python 中,字典(Dictionary)是一种非常常用的数据结构,它是可变的、无序的键值对集合。键是唯一的,值可以重复。字典有许多用途,例如存储设置、用户数据、配置选项、日志、状态等等。
创建字典
我们可以使用花括号 {}
来创建一个空字典,或者使用 dict()
函数来创建一个空字典。我们可以在花括号中使用一系列对 key
和 value
的定义,用逗号来分隔,其中 :
是冒号。例如:
empty_dict = {}
print(empty_dict) # 输出 {}
user_info = {'name': 'Lucas', 'age': 27, 'gender': 'male'}
print(user_info) # 输出 {'name': 'Lucas', 'age': 27, 'gender': 'male'}
user_info2 = dict(name='Lucas', age=27, gender='male')
print(user_info2) # 输出 {'name': 'Lucas', 'age': 27, 'gender': 'male'}
上面的代码创建了两个字典:empty_dict
是空字典,user_info
和 user_info2
都是非空字典。其中,user_info
和 user_info2
本质是一样的,只是写法不同。
另外,我们还可以将两个列表或元组转换成字典。其中第一个列表或元组定义了字典的 key
,第二个列表或元组定义了字典的 value
。例如:
keys = ['name', 'age', 'gender']
values = ['Lucas', 27, 'male']
user_info3 = dict(zip(keys, values))
print(user_info3) # 输出 {'name': 'Lucas', 'age': 27, 'gender': 'male'}
上面的代码创建了一个字典 user_info3
,它的 key
是由 keys
列表定义的,value
是由 values
列表定义的。zip()
函数将 keys
和 values
打包成一个可迭代对象,然后 dict()
函数将其转换为字典。
字典操作
字典有许多操作,包括添加、修改、查询、删除、遍历等。
添加元素
我们可以通过键名来添加元素。如果字典中不存在该键,则添加一个新键值对,如果该键已经存在,则更新其对应的值。例如:
user_info4 = {'name': 'Lucas', 'age': 27, 'gender': 'male'}
user_info4['email'] = 'lucas@example.com' # 添加一个新键值对
print(user_info4) # 输出 {'name': 'Lucas', 'age': 27, 'gender': 'male', 'email': 'lucas@example.com'}
user_info4['age'] = 28 # 更新键值对
print(user_info4) # 输出 {'name': 'Lucas', 'age': 28, 'gender': 'male', 'email': 'lucas@example.com'}
查询元素
我们可以通过键名来查询元素。如果字典中不存在该键,则会报错。为了避免这种情况,我们可以使用 get()
方法。例如:
user_info5 = {'name': 'Lucas', 'age': 27, 'gender': 'male'}
print(user_info5['name']) # 输出 Lucas
print(user_info5['email']) # KeyError: 'email'
print(user_info5.get('name')) # 输出 Lucas
print(user_info5.get('email')) # 输出 None
在 get()
方法中,如果键不存在,则返回 None
。我们还可以指定一个默认值,例如:
user_info6 = {'name': 'Lucas', 'age': 27, 'gender': 'male'}
print(user_info6.get('email', 'default@example.com')) # 输出 default@example.com
删除元素
我们可以通过键名来删除元素。如果字典中不存在该键,则会报错。为了避免这种情况,我们可以使用 pop()
方法。例如:
user_info7 = {'name': 'Lucas', 'age': 27, 'gender': 'male'}
user_info7.pop('gender') # 删除键为 'gender' 的元素
print(user_info7) # 输出 {'name': 'Lucas', 'age': 27}
user_info7.pop('email', None) # 删除不存在的键 'email',不会报错
print(user_info7) # 输出 {'name': 'Lucas', 'age': 27}
在 pop()
方法中,如果键找不到,则会抛出一个异常。我们可以指定一个默认值,例如:
user_info8 = {'name': 'Lucas', 'age': 27, 'gender': 'male'}
user_info8.pop('email', 'default@example.com') # 删除不存在的键 'email',返回指定的默认值
print(user_info8) # 输出 {'name': 'Lucas', 'age': 27, 'gender': 'male'}
我们也可以使用 del
关键字来删除元素。例如:
user_info9 = {'name': 'Lucas', 'age': 27, 'gender': 'male'}
del user_info9['gender'] # 删除键为 'gender' 的元素
print(user_info9) # 输出 {'name': 'Lucas', 'age': 27}
遍历元素
我们可以使用 for ... in
循环来遍历字典中的所有元素,或者使用 items()
方法来获取所有元素的键值对,使用 keys()
方法来获取所有键,使用 values()
方法来获取所有值。例如:
user_info10 = {'name': 'Lucas', 'age': 27, 'gender': 'male'}
for key in user_info10:
print(key, user_info10[key])
# 输出:
# name Lucas
# age 27
# gender male
for key, value in user_info10.items():
print(key, value)
# 输出:
# name Lucas
# age 27
# gender male
for key in user_info10.keys():
print(key)
# 输出:
# name
# age
# gender
for value in user_info10.values():
print(value)
# 输出:
# Lucas
# 27
# male
字典推导式
除了使用常规方式创建字典,我们还可以使用字典推导式。字典推导式是一种简洁高效的方式来创建字典。例如:
keys = ['name', 'age', 'gender']
values = ['Lucas', 27, 'male']
user_info11 = {keys[i]: values[i] for i in range(len(keys))}
print(user_info11) # 输出 {'name': 'Lucas', 'age': 27, 'gender': 'male'}
上面的代码使用 keys
列表的每个元素作为键,使用 values
列表的每个元素作为值,创建了一个字典 user_info11
。
结论
在 Python 中,字典是一种非常常用的数据结构,它可以存储键值对信息,使用简单方便。我们可以通过常规方式或字典推导式来创建字典,使用键名来添加、查询、删除、遍历元素。字典在数据处理、配置管理、日志记录等方面有广泛应用。