python Day-5
字典dic
数据类型划分:1可变 2不可变
不可变: 元祖tuple,布尔值bool,数字int,字符串str。(对str操作生成的是新的str)----可哈希
可变: 列表,字典,集合set。(里边的元素可变 整体不可变)----不可哈希
Dict的key必须是不可变数据类型,可哈希。Value:任意数据类型。
二分法查找很快,dict的key是这么找出来的,所以比list的要快。
Dict 优点:
1 二分法查找查询
2 储存大量关系型数据
特点:无序的(3.5和3.5之前的版本)没索引,要用键值对查找。
字典要是内容多的话就分层写,清晰。
增
dic1 = {'age':18,'name':'jin','sex':'male'}
1
dic1[‘key’] = value 想添加的键值对,没有键值对,就添加。有这个key的话,就覆盖原来的value 有键,就覆盖。
1 dic1 = {'age':18,'name':'jin','sex':'male'}
添加high这个键值对 2 dic1['high'] = 185
修改年龄 3 dic1['age'] = 16 4 print(dic1)
2
有键值对,不做任何改变,没有才添加。
1 dic1.setdefault(‘key’)value 没写,就输出none。 2 dic1.setdefault(‘key’,value)没有才添加。
1 dic1 = {'age':18,'name':'jin','sex':'male'}
添加weight这个键值对 value的值是none 2 dic1.setdefault('weight')
添加weight这个键值对 value的值是150 3 dic1.setdefault('weight',150)
添加name这个键值对 value的值是二哥 4 dic1.setdefault('name','二哥') 5 print(dic1)
删
1
1 Dic1.pop(‘key’) 有返回值,按键去删除。 2 Dic1.pop(‘key’,提示) 没有返回提示的内容,不设置报错。 3 一定要注意 ,尤其写多代码的时候。
1 dic = {'age':18,'name':'jin','sex':'male'}
删除age这个键值对
2 print(dic.pop('age'))
3 print(dic)
2
Dic1.popitem() 随机删除,有返回值,为元祖,删除的key值。
1 dic = {'age':18,'name':'jin','sex':'male'}
随机删除键值对 2 print(dic.popitem()) 3 print(dic)
3
1 Del dic[‘key’]删除指定键值对内容,删除没有的报错。
1 dic = {'age':18,'name':'jin','sex':'male'}
删除name这个键值对 2 del dic['name'] 3 print(dic)
删除字典会报错 4 del dic 5 print(dic)
4
1 Dic1.clear()清空字典.
改
让新的value替换原来老的value
1 dic = {'age':18,'name':'jin','sex':'male'} 2 dic['age'] = 16 3 print(dic)
1 Dic1[‘key’] = value 2 Dic = 字典 3 Dic2 = 字典2 4 Dic2.update(dic)把dic的内容更新到dic2中,有的覆盖,没有的更新。
1 dic = {'age':18,'name':'jin','sex':'male'} 2 dic2 = {'name':'alex','weight':75} 3 dic2.update(dic) 4 print(dic2)
查
1 Dic1.keys()列表 键 2 Dic1.values()列表 值 3 Dic1.items()列表 元祖包含的键值对
1 dic = {'age':18,'name':'jin','sex':'male'} 2 print(dic.keys(),dic.values(),dic.items())
结果是:
dict_keys(['name', 'age', 'sex'])
dict_values(['jin', 18, 'male'])
dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')])
1 For i in 字典: 2 得出的是key。 3 For i in 字典.keys(): 4 得出的是key。 5 For i in 字典.values(): 6 得出的是value。
1 For i in dic.items(): 2 Print(i) 3 弄出一堆元祖。 4 For k,v in dic.items(): 5 Print(k,v) 6 弄出对应关系,一组一组的,没有括号,没有逗号。
1 dic = {'age':18,'name':'jin','sex':'male'} 2 for i in dic.items(): 3 print(i) 4 for k,v in dic.items(): 5 print(k,v)
结果是
1 ('age', 18) 2 ('sex', 'male') 3 ('name', 'jin') 4 age 18 5 sex male 6 name jin
1 Dic[key] = value 没有索要key值的报错。
1 获得内容首选get 不会报错。 2 Dic.get(key) 有的返回value 没有默认返回none。 3 Dic.get(key,提示)没有返回提示内容。
整理: