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去字典中查询,返回查到的结果;

代码展示:

 

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.字典的嵌套

代码展示:

 

 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         
字典的嵌套

 

posted @ 2018-07-07 12:02  pythonZhou  阅读(171)  评论(0编辑  收藏  举报