python 字典处理的一些坑_Python_005(字典无极坑)

一.字典(dict)

1.字典的定义格式:dic{key1:value1,key2,value2}

:这里面key是唯一的,保存的时候,根据key计算一个内存地址,然后将key-value保存在这个地址中,这种算法叫做hahs算法,

这个key意味是不可变的,为了能够准确找到计算内存地址而规定的;value没有要求,可以保存任意类型的数据;

:dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序保存的,而hash表不是连续的,所以不能进行切片,只能通过key来获取dict中的数据;

二.字典的增删改查

1.增加

a.添加格式:dic[key] = 元素

:直接添加,如果dic中没有出现这个key,就会新增一个key-value的组合进dic中

:如果dic中已经有了这个key,就会直接覆盖上一个key对应的value的值!

b.第二种添加的格式:dic.setdefault(key):若没有出现过key值,默认会自动创建一个key:None;

:如果已经出现key值,那么setdefault将不起作用;

:setdefault执行了两个步骤:

(1).首先判断原来的字典中有没有这个key,如果没有,执行新增;如果有则不起作用

(2).用这个key去字典中查询,返回查到的结果;

代码展示:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 dic = {"疾风剑豪":"亚索","暴走萝莉":"拉克丝",}2 ret = dic.setdefault("疾风剑豪","诺手")3 print(dic)4 print(ret)5 #输出结果:{'疾风剑豪': '亚索', '暴走萝莉': '拉克丝'}

6 亚索7

8 注意:这里ret的返回值是亚索,而不是诺手!

关于setdefault

2.删除

a:ret = dic.pop(指定key值)指定key值删除,有返回值,返回value;

b:del dic[key值]这个没有返回值;

3.修改

newdic.update(dic):把newdic中的内容更新到dic中,如果key重名,则修改替换,如果不存在key,则新增;

4.查

print(dic.get("key"):可以通过key来获取value值,如果key不存在,返回None

print(di.get("key","value")):也可以添加一个value值;

三.字典的相关操作

1.dic.keys()可以拿到所有的key,返回key的集合,像是列表,但不是列表,是一个可迭代对象;

:可以进行迭代循环:for key in dic.keys():print(key)打印所有的key值

:for value in dic.values():print(value)打印所有的value值

:for item in dic.items():print(item)打印所有的元素,以元组的形式出现;

2.解构:把一个元组里面的元素赋值给前面的变量,这种方法叫做解构;

例如:a,b = 1,2 print(a) a为1 若a = 1,2 print(a) a为(1,2)

推导公式:for k,v in dic.items():print(k,v):得到是一个个元组构成的可迭代对象,元组里面是(key,value);

讲解:你for item in dic.items(): print(item)你拿到的是由key和value组成的元组,元组可以进行结构k,v=(key,value)

所以for k,v in dic.items();你就单独拿出了key值和value值;

3.字典的嵌套

代码展示:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 dic ={2 "name" : "国际章",3 "工资" : 18000,4 "age" : 18,5 "human": {6 "name1" : "汪峰",7 "工资1" : 10,8 "age" : 356

9 },10 "son": [11 {"name3" : "王贤柏", "age" : 19},12 {"name4" : "吴祖蓝", "age" : 119}13 ]14 }15 print(dic["human"]["工资1"])16 print(dic["son"][0]["name3"])17 #输出结果:10

18 王贤柏19

字典的嵌套

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值