字典
字典介绍
字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key 的值计算value的地址,具有非常快的查取和插入速度,是一种可变对象集合类型,支持修改、插入、删除等操作。
字典的创建
创建空字典:
dic = {}
创建字典:元素不限 值可以是任意类型。
{key1:value1, key2:value2}
cgt_infor = {“addr”: “hunan”, “age”: “18”, “hobbit”: [“study python”, “badminton”]}
冒号后面的内容就是值。(value):
可以是任意类型。
冒号前面的只能是不可变数据类型(key值):只能是不可变类型,可以是()元组,字符串。
键需要唯一,但是有重复键时可以覆盖。会取最后一个值内容。
例子中打印结果为北京。
例:爱好有多个,就可以用列表将多个值表述。
“hobbit”: [“study python”, “badminton”]
dict()创建字典方式:
dict(**kwargs)键值对
dic = dict(name= “Amy”, age=18)
dict(mapping) 映射
dic = dict([(“name”, “Amy”), (“age”, 18)])
字典创建拓展
map(func, *iterables): 将iterables里面的元素逐个传到func里面做处理。
func:函数。 iterables: 可迭代对象。
例:将list(“1234”)呈现为[1,2,3,4]
已知将list(“1234”)打印结果会是列表加字符串显示 [“1”, “2”, “3”, “4”],而我们需要呈现的是列表中显示的是整数,而非字符串。
li = list(“1234”)
int是方法。li是列表为可迭代对象。
map(int, li) map对象(将字符串数字映射为整数)
直接打印会显示需要强转
print(list(map(int, li)))将map对象强转为列表
zip(iter1[,iter2[…]]): 将iter1 iter2中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
例:li_k = [‘name’, ‘age’]与li_v = [‘Amy’, 18]
将这两个列表组合成键字对的字典
目标:[(‘name’, ‘Amy’), (‘age’, 18)]
li_k = [‘name’, ‘age’]
li_v = [‘Amy’, 18]
zip(li_k, li_v) zip对象:打包将可迭代对象里面一一对应的元素打包元组进行返回。
进行强转
print(dict(zip(li_k, li_v)))
访问字典、查询、增加、修改
字典是集合类型不是序列类型,所以没有索引下标,也没有切片。但是,与列表类似,可以把相应的键放入方括号内获取对应值的方法取值。
当key值不存在时访问会报错
增加值,取出赋值
修改值,取出重新赋值
一系列删除
删除字典元素:del dic[exit_key]或dic.pop[exit_key]
del 字典变量名[键值]
字典变量名.pop(键值) 注意⚠️:必须传参数
删除整个字典: del dic
清空整个字典:dic.clear()
字典常见操作
- D.get(k[,d]):返回指定键的值,如果值不在字典中,则返回default值
- D.items():以列表返回可遍历的(键、值)元组对
- D.keys():以列表返回字典所有的键
- D.valuse():以列表返回字典所有的值
D.get(k[,d])
这个函数方法返回键的值和上文通过方括号返回键的值的优势在于如果键不存在不会报错,而是显示空值None。
D.items()
以列表返回可遍历的(键、值)元组对
D.keys()
获取所有的key
D.valuse()
获取所有的valuse