python中字典用于存放具有映射关系的数据
字典中的key不能相同
字典中的key必须为不可变类型,所以可以是数、字符串、元组, 但不能是列表
创建字典
通过{}创建
dict1 = {'eric': 80, 'bob': 90}
dict2 = {}
通过函数dict()创建
a = [('eric', 80), ('bob', 90)]
dict3 = dict(a) # {'eric': 80, 'bob': 90}
dict4 = dict() # {}
dict5 = dict(eric=80, bob=90) # {'eric': 80, 'bob': 90}
通过zip()创建
zip(key_seq, value_seq)
dict6 = dict(zip('abc', [1, 2, 3])) # {'a': 1, 'b': 2, 'c': 3}
通过dict.fromkeys()创建
dict.fromkeys(key_seq, value)
通常用来初始化字典, 设置value的默认值
dict6 = dict.fromkeys('abc', 0) # {'a': 0, 'b': 0, 'c': 0}
dict7 = dict.fromkeys(range(3), 'x') # {0: 'x', 1: 'x', 2: 'x'}
通过字典推导式创建
dict8 = {i: 2*i for i in range(3)} # {0: 0, 1: 2, 2: 4}
根据key获取value
dict[key]
dict.get(key)
dict.get(key, value)
- 当key存在时返回key对应的value
- 当key不存在时返回设置的默认value
dict9 = {'eric': 80, 'bob': 90}
a = dict9.get('eric', None) # 80
b = dict9.get('jean', None) # None
c = dict9.get('jean') # None
获取字典长度
- 获取字典长度(字典中键值对的个数)
len(dict)
获取字典中所有key-value, key, value
- 获取字典中所有key-value对:
dict.items()
- 获取字典中所有key:
dict.keys()
- 获取字典中所有value:
dict.values()
dict10 = {'eric': 80, 'bob': 90}
print(list(dict10.items())) # [('eric', 80), ('bob', 90)]
print(list(dict10.keys())) # ['eric', 'bob']
print(list(dict10.values())) # [80, 90]
设置指定key对应的value值
dict[key] = value
dict.setdefault(key, value)
- 当key存在时对应的value不变
- 当key不存在时, 字典尾部新增一个key-value对
dict11 = {'eric': 80, 'bob': 90}
dict11.setdefault('eric', 0)
print(dict11) # {'eric': 80, 'bob': 90}
dict11.setdefault('jean', 0)
print(dict11) # {'eric': 80, 'bob': 90, 'jean': 0}
删除字典
- 删除字典:
del dict
- 清空字典:
dict.clear()
- 删除指定key-value:
dict.pop(key, value)
- 当key存在时,删除对应key-value, 并返回key对应的value
- 当key不存在时,不删除字典元素, 返回value值
- 随机返回并删除字典中的一对键和值(一般删除末尾对):
dict.popitem()
dict12 = {'eric': 80, 'bob': 90}
a = dict12.pop('eric', 10)
print(a) # 80
print(dict12) # {'bob': 90}
dict13 = {'eric': 80, 'bob': 90}
b = dict13.pop('jean', 10)
print(b) # 10
print(dict13) # {'eric': 80, 'bob': 90}
dict14 = {'eric': 80, 'bob': 90}
a = dict14.popitem()
print(a) # ('bob', 90)
print(dict14) # {'eric': 80}
字典转化
- 将字典转化为字符串:
str(dict)
dict15 = {'eric': 80, 'bob': 90}
print(str(dict15)) # "{'eric': 80, 'bob': 90}"
# list(dict)是获取字典的key list
print(list(dict15)) # ['eric', 'bob']
判断字典中是否包含指定的key
- 判断字典中是否包含指定的key:
key in dict
字典复制
- 字典复制(浅拷贝):
a = dict
- 字典复制(深拷贝):
a = dict.copy()
print(id(b) == id(a)) # True 浅拷贝
print(id(c) == id(a)) # False 深拷贝
使用字典格式化字符串
temp = '姓名:%(name)s, 年龄:%(age)d, 薪资:%(salary)010.2f'
eric = {'name': 'eric', 'age': 18, 'salary': 500000}
temp_format = temp % eric
print(temp_format) # "姓名:eric, 年龄:18, 薪资:0500000.00"