字典的增删改查
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示
d = {key1 : value1, key2 : value2 }
1、字典中取值(方法:[]、get)
s = {
"id": 315,
"name": "矿泉水",
"sex": "女",
"age": 27,
"addr": "上海",
"grade": "摩羯座",
"phone": "18317155664",
"gold": 100
}
print(s["id"]) 注意:[]方法,在[]中输入不存在的key,直接报错
print(s.get("name")) 注意:get方法,输入不存在的key,返回None
2、字典中增加值(方法:[]、setdefault)
s["男"]="200" [] 注:增加已有的key,直接变更制定key的values值
s.setdefault("kai","12") setdefault 注:增加已有的key,key中values值不变
3、修改key中的values([])
[]中输入key = values s["男"]="200"
4、删除字典中的key(方法:pop、del)
s.pop("phone") print(s) 结果:{'id': 315, 'name': '矿泉水', 'sex': '女', 'age': 27, 'addr': '上海', 'grade': '摩羯座', 'gold': 100, '男': 300, 'kai': '12'} #pop删除指定的key,删除返回的值。 删除不存在的key会报错
del s["name"] print(s) 结果:{'id': 315, 'sex': '女', 'age': 27, 'addr': '上海', 'grade': '摩羯座', 'gold': 100, '男': 300, 'kai': '12'} #del删除指定的key,没有返回值,直接删除。删除不存在的key会报错
5、查询字典中key,查询字典中values
s.keys() 查询字典中key
s.values() 查询字典中values
6、循环字典,取出key、values
s = {
"id": 315,
"name": "矿泉水",
"sex": "女",
"age": 27,
"addr": "上海",
"grade": "摩羯座",
"phone": "18317155664",
"gold": 100
}
for i in s:
print(i) #取出字典中的key
for i in s:
print(i,s[i]) #取出字典中的key,values
for i in s:
values=s.get(i)
print(i,values) #取出字典中的key,values 效率最高
for key,value in s.items():
print(key,value) #取出字典中的key,values items把字典中的元素转化成一个二维数组再取出key、value效率低不推荐使用
7、判断key是否存在字典中(使用'in')
if "id" in s:
print("你好") 建议使用此方法,少了提取key的步骤
if "id" in s.keys(): print("你好") 不建议使用此方法,keys()方法是把所有的key转换为一个list再循环后提取对应的key
8、新增key,(update方法)
含义 :Python 字典 update() 方法用于更新字典中的键值对 。可以修改存在的键值对应的值,也可以添加新的键值对到字典中
语法:d.update(e)
e:可能是字典,也可能是键值对序列。
s.update(a=1,b=2)
print(s)
9、清空字典里面的数据(clear方法)
s.clear()
10、字典中有多层嵌套字典怎么操作??( 怎么添加数据、删除数据、修改数据)
info = {
'lgy':{
'age':18,
'addr':'beijing',
'cars':['bmw','ben-z','audi'],
},
'fd':{
'house':{
'bj':['海淀区','昌平区','朝阳区','西城区'],
'sh':['静安区','闸北区']
},
'money':5000
}
}
# lgy 又买了bc一辆车
# fd卖了一辆北京海淀的房子,钱增加了40000
info['lgy']["cars"].append("bc") # 给lgy 增加一辆 bc的车
info["fd"]["house"]["bj"].remove("海淀区") # 给fd删除海淀区的房子
info["fd"]["money"] += 40000 # 给fd账户添加40000的金额
info["fd"]["house"].pop("sh") #fd 删除上海(sh)的房子
print(info)
{'lgy': {'age': 18, 'addr': 'beijing', 'cars': ['bmw', 'ben-z', 'audi', 'bc']}, 'fd': {'house': {'bj': ['昌平区', '朝阳区', '西城区'], 'sh': ['静安区', '闸北区']}, 'money': 45000}}
{'lgy': {'age': 18, 'addr': 'beijing', 'cars': ['bmw', 'ben-z', 'audi', 'bc']}, 'fd': {'house': {'bj': ['昌平区', '朝阳区', '西城区']}, 'money': 45000}} #fd 删除上海(sh)的房子