字典dict的增删改查
dict字典 , dict增删改查 , 添加内容可以直接使用key来进行添加 2. setdefault() ,
删: pop()删除最后一个 , del(切片删除) , clear(清空列表) , popitems() 随机删除 , remove(指定元素删除)
改: 用key改, 也可以进行update (把下面的更新到上面) 查: 用key查找.
items() 返回所有键值的元组表示形式.(解构)
1. dict字典
{}表示. 每次保存两个数据 key:value, 键值对
{"大阳哥":"赵阳", "sylar":"邱彦涛","强强":"张强强"}
value: 任意的数据类型
key: 必须是可哈希的(不可变)
1. 增: 1.添加内容可以直接使用key来进行添加 2. setdefault()
dic = {}
dic["jay"] = "王力宏" # {'jay': '王力宏'}
# # 如果key存在.执行的是修改操作. 如果key不存在. 执行的是新增
print(dic)
结果:{'jay': '王力宏'}
setdefault
dic = {}
dic.setdefault("李嘉诚")
dic.setdefault("李嘉诚", "房地产")
print(dic)
结果:{'李嘉诚': None}
2. 删: pop()删除最后一个或删除指定位置 , del(切片删除) , clear(清空列表) , popitems() 随机删除
remove(指定元素删除)
dic = {'朱高炽':None, "朱元璋":"和尚", "诸葛亮":'不是个和尚'}
ret = dic.pop("朱元璋")
print (dic)
结果:{'朱高炽': None, '诸葛亮': '不是个和尚'}
dic = {'朱高炽':None, "朱元璋":"和尚", "诸葛亮":'不是个和尚'}
dic.clear()
print (dic)
结果:{}
dic = {'朱高炽':None, "朱元璋":"和尚", "诸葛亮":'不是个和尚'}
ret = dic.popitem() # 随机删.
print(ret)
#将oldboy对应的字典中的alex对应的列表中的python2删除。
dic = {
'name':['alex',2,3,5],
'job':'teacher',
'oldboy':{'alex':['python1','python2',100]}
}
dic["oldboy"]['alex'].remove('python2')
print(dic)
3. 改: 用key改, 也可以进行update (把下面的更新到上面)
dic = {}
dic["jay"] = "王力宏" # {'jay': '王力宏'}
# # 如果key存在.执行的是修改操作. 如果key不存在. 执行的是新增
print(dic)
结果:{'jay': '王力宏'}
update: 把dic2更新到dic1, dic1中如果存在了dic2中的key.会修改(覆盖), 如果不存在. 新增这个key:value
dic1.update(dic2)
dic1 = {"name":'朱高炽','age':58, '朱祁镇':18}
dic2 = {"name":'朱由检','年轻':18, '朱棣':55, '张无忌':'赵敏'}
# # update: 把dic2更新到dic1, dic1中如果存在了dic2中的key.会修改(覆盖), 如果不存在. 新增这个key:value
dic1.update(dic2)
print(dic1)
结果:{'name': '朱由检', 'age': 58, '朱祁镇': 18, '年轻': 18, '朱棣': 55, '张无忌': '赵敏'}
4. 查: 用key查找.
dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50}
print(dic.keys()) # dict_keys(['朱允炆', '朱祁镇', '朱棣']) 把这个当成list来看就可以了
for el in dic.keys():
print(el) # 拿到了key.就可以拿value
print(dic.get(el)) # value
结果:
dict_keys(['朱祁镇', '朱棣', '朱允炆'])
朱祁镇
18
朱棣
55
朱允炆
50
常用操作:
1. keys()返回所有的key的列表
dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50}
print(dic.keys()) # dict_keys(['朱允炆', '朱祁镇', '朱棣']) 把这个当成list来看就可以了
结果;dict_keys(['朱祁镇', '朱棣', '朱允炆'])
2. values()返回所有的value的列表
dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50}
print(dic.values())
结果:dict_values([18, 55, 50])
解构
dic={"成龙":"洪金宝"}
k,v = dic.popitem() # dic.popitem()的结果是一个元组. 元组可以直接解构成两个值
print(k)
print(v)
结果:成龙
洪金宝
get
dic.get('get')
如果key不存在,返回None,存在就返回value.
可以给一个默认值,当key不存在就返回默认值
可以用来判断字典中有没有我要的key
3. items() 返回所有键值的元组表示形式.(解构)
dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50}
print(dic.items())
# # 从dic中获取到list列表. 列表中每一项都是一个元组(key,value) 通过解构可以直接把key和value获取到
for k,v in dic.items():
print(k)
print(v)
结果:dict_items([('朱祁镇', 18), ('朱棣', 55), ('朱允炆', 50)])
朱祁镇
18
朱棣
55
朱允炆
50
dic={"成龙":"洪金宝"}
k,v = dic.popitem() # dic.popitem()的结果是一个元组. 元组可以直接解构成两个值
print(k)
print(v)
结果:成龙
洪金宝
作业题:
1:页面显示 序号 + 商品名称 + 商品价格,如:
1 电脑 1999
2 鼠标 10
2:用户输入选择的商品序号,然后打印商品名称及商品价格
3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
4:用户输入Q或者q,退出程序。
goods = [{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
{"name": "娃娃", "price": 336},]
for product in goods: # 1
print(goods.index(product) + 1, product['name'], str(product['price']))
while 1: # 3
num = input("请输入你想买的东西>>>:").strip() # 2
# 判断输入的是不是q,q退出
if num.upper() == 'Q': # 4
break
# 判断输入的是否合法
if num.isdigit() and int(num) >=1 and int(num) <= len(goods): # 2
num = int(num) - 1 # 恢复回索引
print(goods[num]['name'], goods[num]['price'])
break
else:
print("警告一下. 不许胡乱输入, 请重新输入")