1.字典简介
字典,在其他语言里又称映射、关联表。使用字典这种数据结构时,最频繁的操作就是检索。即在关键字集合(keys)查找是否存在某个关键字,然后通过关键字(key)返回关联的值(value)。python里采用散列技术(hash,哈希)对关键字进行处理,使经过散列函数处理的关键字变成某个存储地址。通过地址找值是计算机擅长的,所以效率很高。注意,字典是可变对象。
2.创建字典
(1)创建空字典
# 创建空字典
dct = {}
dct2 = dict()
(2)通过指定key,value
# 方式1
dct = {'key1': 'value1', 'key2': 'value2'}
# 方式2,注意这里是利用dict函数的超参数性质,A B是参数而不是字符串,会自动处理成{'A':1, 'B':2}
dct = dict(A=1, B=2)
(3) 通过已有序列
keys = ['A', 'B', 'C']
values = [1, 2, 3]
# 第一种方式
dct = dict(zip(keys, values))
# 第二种方式
dct = {keys: values}
(4)如果value暂时无法提供,想生成不包含值(后续赋值)的字典,还可以这样写
keys = ['A', 'B', 'C']
dct = dict.fromkeys(keys, None)
(5) 字典生成式
dct = {keys[i]: value[i] for i in range(len(keys))}
3.检索
最直接的方式如下
# 指定key为'A'
value = dct['A']
上面的方法建立在你对字典里的内容有把握的情况,因为字典里可能没有你想查找的关键字。这样写会报错,我们可以使用异常捕获或者下面的优雅方式:
# 尝试查找'D',若没有返回0
value = dct.get('D', 0)
# 尝试查找'D',若没有则添加该关键字并赋值为0
value = dct.setdefault('D', 0)
如果想查询后删除该键值对,可使用:
# 查询并删除A,如果没有,返回默认值0
value = dct.pop('A', 0)
常用的另一个场景就是遍历
# dct.items()返回(key, value)的元组
for key, value in dct.items():
print(key, value)
# 只关心key时
for key in dct.keys():
print(key)
# 只关心value时
for value in dct.values():
print(value)
4.修改值
# 如果字典中已有该关键字,这个赋值将会修改值,若没有,相当于新增一个键值对
dct['A'] = 111
5.删除
(1)删除某个键值对
del dct['A]
(2) 清空字典
dct.clear()
(3) 删除字典
del dct