字典Dictionary
字典(Dictionary)是Python中一种可变的、有序的键值对集合。每个键(key)必须是唯一的且不可变的,值(value)可以是任意数据类型。
特点
- 键值对
- 可变性:可添加、修改、删除
- 有序性:保持插入顺序
- 键必须是不可变类型
- 动态调整大小
创建字典
# 空字典
empty_dict = {}# 直接创建
person = {'name': 'migu', 'age': 42}# 嵌套字典
nested_dict = {'user1': {'name': 'zhangsan', 'age': 30},'user2': {'name': 'lisi', 'age': 35}
}# 从键值对创建
person = dict(name='zhangsan', age=30, city='shanghai')# 从可迭代对象创建
person = dict([('name', 'zhangsan'), ('age', 30)])# 从键的迭代器和值的迭代器创建
keys = ['name', 'age']
values = ['zhangsan', 30]
person = dict(zip(keys, values))# 字典推导式
# 创建数字平方的字典
squares = {x: x*x for x in range(5)}
print(squares) # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}# 从列表创建字典
names = ['zhangsan', 'lisi', 'wangwu']
name_dict = {name: len(name) for name in names}
print(name_dict) # 输出: {'zhangsan': 8, 'lisi': 4, 'wangwu': 6}
访问字典
get(key[, default]) # 如果键存在,返回其值;如果不存在,插入键并设置默认值
person = dict(name='zhangsan', age=30, city='shanghai')
print(person.get('name')) # 输出: zhangsan
print(person.get('age')) # 输出 : 30
print(person.get('city', 170)) # 输出: shanghaiheight = person.setdefault('height', 175)print(height) # 输出: 175
print(person) # 输出: {'name': 'zhangsan', 'age': 30, 'city': 'shanghai', 'height': 175}
添加和修改元素
# 使用另一个字典或可迭代对象更新当前字典
dict1 = {'a': 1, 'b': 2}
dict1.update({'b': 3, 'c': 4}) # 更新b,添加c
print(dict1) # 输出: {'a': 1, 'b': 3, 'c': 4}# 更新
dict1.update(d=5, e=6)
print(dict1) # 输出: {'a': 1, 'b': 3, 'c': 4, 'd': 5, 'e': 6}
删除元素
# pop(key[, default]) 删除指定键并返回其值,如果键不存在且提供了默认值,则返回默认值,否则报错
v1 = person.pop('age') # 30
v2 = person.pop('sex', 'unknown') # unknown
# popitem() 删除并返回最后插入的键值对(LIFO顺序)
v3 = dict1.popitem() # 输出: ('e', 6)
print(v3)
# clear() 清空字典
person.clear()
print(person) # 输出: {}
字典视图
dict1 = {'a': 1, 'b': 3, 'c': 4, 'd': 5, 'e': 6}
keys = dict1.keys() # 返回字典所有键的视图对象
values = dict1.values() # 返回字典所有值的视图对象
items = dict1.items() # 返回字典所有键值对的视图对象
print(keys) # 输出: dict_keys(['a', 'b', 'c', 'd', 'e'])
print(values) # 输出: dict_values([1, 3, 4, 5, 6])
print(items) # 输出: dict_items([('a', 1), ('b', 3), ('c', 4), ('d', 5), ('e', 6)])