1、字典的特点:
- 速度快,好取值
- 无序存储,因此每次输出的顺序都有可能不一样
- 可以循环
- 以k-v形式存在,即:
stus={ 'name':'xiaojun', 'sex':'男', 'shengao':'185', 'age':18, 'email':'abc@qq.com', 'addr':'火星', 'id':1 }
2、增删改查实现:
#查:
- 查询所有字典内容:
print(stus)
- 查询所有的value值:
使用.values()方法:
print(stus.values())
- 查询所有的key:
使用.keys()方法:
print(stus.keys())
- 查询单个值:
使用key作为变量进行查询,可以查出value值:
print(stus['name'])
如果没有key,那么以上这种方式会报错,这时换成另一种查询方式:
print(stus.get('xingming'))
使用.get()方法,如果程序中有key,则返回value值;如果没有Key,则返回:None。
(Python中的key和value都是成对出现的。)
当没有key的时候,可以设置一个默认的value值:
print(stus.get('xingming','lrx'))
那么当使用.get()时就会返回这个默认value,即lrx。
.get()方法:
- 查找不报错
- 可以设置默认值
#增:
- 直接赋值,如果没有值,直接加入;
stus['name']='小军'
- 使用.setdefault()方法:
stus.setdefault('addr','北京')
.setdefault()方法:
- 如果原来有值,则使用setdefault()后不会覆盖原值。
- 适用于不清楚原来有哪些key-value,又想赋值或者查询的情况:
stus['name']='小军' stus['name']='海龙' stus.setdefault('name','杨帆')
print(stus['name'])
#结果为海龙
#改:
如果有值,就覆盖原值:
stus['zhanghao']='admin'
#删:
- 删除具体值:
使用.pop()方法,以key为变量:
stus.pop('zhanghao')
- 删除具体值:
使用del方式,以key为变量:
del stus['zhanghao']
- 随机删除某一个值:
使用.popitem()方法:
stus.popitem()
3、清空字典:
使用.clear()方法:
stus.clear()
4、字典合并更新:
使用.update()方法,相当于追加,把一个字典里的内容加到另一个字典里:
abc={'住址':'北京'}
stus.update(abc)
5、字典循环:
使用for循环,
(字典都是一维的)
- 只打印key:
for i in stus: if i=='zhanghao': print(stus[i])
#输出value
print(i,'========>',stus.get(i))
- 同时打印key和value:
使用.items()方法:
for k,v in stus.items(): print(k,'=========>',v)
6、多层嵌套字典应用:
all_stus={ 'xiaojun': { 'name': 'xiaojun', 'sex': '男', 'shengao': '185', 'age': 18, 'email': 'abc@qq.com', 'addr': '火星', 'id': 1, 'cars':['牧马人','911','野马','劳斯莱斯'] }, 'yangfan': { 'name': 'hailong', 'sex': '男', 'shengao': '185', 'age': 18, 'email': 'abc@qq.com', 'addr': '火星', 'id': 3, 'bags':{ 'qianbao':['lv','ysl'], 'beibao':['coach','abc'] } } }
- 找到value所在位置后,进行列表追加:
all_stus['xiaojun']['cars'].append('五菱宏光')
(找value类似于列表,将所有的key作为下标使用。)
- 打印值的长度:
使用len()方法:
print(len(all_stus['xiaojun']['cars']))
- 改值:
all_stus['yangfan']['sex']='女'
- 删值:
使用.pop()方法:
all_stus['yangfan']['bags']['qianbao'].pop(0)#删除lv
使用.remove()方法:
all_stus['yangfan']['bags']['qianbao'].remove('ysl')#删除ysl
(remove()是列表list的方法,并不是字典里的方法。)
使用del()方式:
del all_stus['yangfan']['bags']['qianbao'][0]#del在字典中括号里是key,在列表中括号里是下标
方法都是接();只有取值时用的是[]