Python--day05--dict讲解(可变,不可变数据类型讲解)及增删查改等操作
1,字典dict
数据类型划分:可变数据类型,不可变数据类型。
不可变数据类型: 元组 bool int str 可哈希
注:str即字符创改变后行成了新的字符串,所以说字符串是不可变数据类型
可变数据类型:list dict set 不可哈希
dict key 必须是不可变数据类型,可哈希
value:任意数据类型
dict 优点:二分查找去查询
存储大量的关系型数据
特点:无序的(3.5以及3.5版本以前的dict是无序的)

增:
只有两种添加方法
1,第一种添加方法
dic1['high'] = 185
没有键值对,添加
dic1['age'] = 16
有键值对,则覆盖

2,第二种添加方法
a,dic1.setdefault(‘weight’) 往字典里面添加‘weight’:None

b,dic1.setdefault(‘weight’,150) 往字典里面添加‘weight’:150

c,dic1.setdefault(‘name’,'二哥')如果name已经存在,就不再覆盖更改,维持原数据

删:
只有四种方法,用的话尽量用dic1.pop('age','设置一个当该键不存在的返回值')
1,dic1.pop('age')按照键去删,有返回值,即返回键所对应的值

dic1.pop('二哥')如果没有二哥这个键就报错

dic1.pop('二哥',‘没有此键’)这样写,有二哥这个键就直接删了,没有就返回值‘没有此键’。可设置返回值
注:None不是一个字符串,是一个特殊的数据类型

2,dic1.popitem()随机删除一个键,返回的是一个元组,以键和值的形式

3,del dic1['name'] 删除键值

del dic1['name1']如果键值name1不存在就会报错,所以尽量用pop,不用它

del dic1删除整个字典,之所以会报错是因为不存在字典dic1

4,清空,打印dic1不会报错,只是什么都没有打印

改:
1,dic1['age'] = 16,直接覆盖也叫改

2,dic2.update(dic),它的意思是把dic中所有的键值对都更新到dic2中,也就是覆盖添加
用途:以后保存cookie之类会用到,因为每次更新之后都不一样了。

查:
1,dic1.keys() 查询返回一个列表装着键
dic1.values()查询返回一个列表装着值
dic1.items()查询返回一个列表装着元组,元组里面是键和值
这三个查询是字典中所特有的
,
2, #循环查询,如果什么都不写,直接打印键,也就是for i in dic1相当于for i in dic1.keys()
for i in dic1:
print(i)

for i in dic1.items()打印出来是键值对

3,用两个参数k v来分别接收打印的值

4,dic1['name']通过键打印出相对应的值,如果没有这个键的话就会报错,用得很不方便。

5,dic1.get('name1') 没有name1这个键就返回None
dic1.get('name1','没有这个键') 没有name1这个键就返回没有这个键

面试题:
分别赋值:
1,用一行代码给a,b赋值 a,b = 1,2和 a,b,c = 0,0,0 (不能写成 a,b,c = 0)


通过a,b = [1,2]实现一行代码给a和b赋值

给a和b赋值两个列表,元组(相当于编译器有个自动识别),看最小元素一一对应,列表里的元素个数必须相同,不能一个是2个元素,一个是3个元素。


a,b = [1,2,3]多了一个元素3就会报错

2,用一行代码将a,b的值互换(下图中将a和b的内存地址互换)


ps:学完之后记得专门开一篇博客写面试题。
心得:python的容错率比较高,后面加十个分号都给你报错。(js的容错率最高,听别人说的)
浙公网安备 33010602011771号