字典dict的基本用法
- dict
用大括号\{\} 括起来. 内部使用key:value的形式来保存数据
\{'jay':'周杰伦', "jj":'林俊杰'\}
注意:字典的key必须是可哈希的. 不可变的, value 没有限制
不是按照我们保存的顺序保存的, 无序的
- 增删改查
- 增:dict[不存在的key] = value, setdefault()
dic = {}
dic[‘name’] = ‘周润发’ # 如果dict中没有出现这个key, 就会新增⼀个key-value的组合进dict
dic[‘age’] = 18
print(dic)
# 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
dic.setdefault(‘李嘉诚’) # 也可以往⾥⾯设置值.
dic.setdefault(“李嘉诚”, “房地产”) # 如果dict中已经存在了. 那么setdefault将不会 起作⽤
print(dic)
2. 删:pop(key). del dict\[key\]. popitem(), clear()
dic = {"牌牌":"你去哪里了", "晓雪":"你快回来.", "雪雪": "又走了"}
ret = dic.pop("晓雪") # 删除一个元素. 返回这个元素的value值
print(ret)
del dic["雪雪"]
print(dic)
ret = dic.popitem() # 返回给你的是一个元组.
print(ret)
3. 改:dict\[存在的key\] = 新值, d1.update(d2) 把d2的k-v更新到d1中
dic = {"id":1, 'name':'李嘉诚', 'money':10000000}
# 李嘉诚赔了500
dic['money'] = dic['money'] - 500 # 用key去修改
print(dic)
dic1 = {"李晨":"范冰冰", "邓超":"孙俪", "王祖蓝":"李亚男"}
dic2 = {"李晨":"张馨予", "郑凯":"baby", "王宝强":"马蓉"}
dic1.update(dic2) # 把dic2中的内容更新到 dic1 , 如果存在了key. 替换. 如果不存在,添加
print(dic1)
print(dic2)
4. 查:get(key, 默认值), setdefault(), dict\[key\]
dic = {"及时雨":"宋江", "小李广":"花荣", "黑旋风":"李逵", "易大师":"剑圣"}
dic["大宝剑"] = "盖伦" # 新增
dic["及时雨"] = "天老爷" # 修改
print(dic["易大师是个脑残"]) # 查询, 如果key不存在,报错
#get() 1、可以通过key来获取value的值. 那么如果key不存在. 返回None.
# 2、可以给出一个默认值. 当key不存在的时候返回默认值
print(dic.get("易大师")) # 如果key不存在. 返回None
print(dic.get("余小C"))
dic = {"及时雨":"宋江", "易大师":"剑圣"}
dic.setdefault("及时雨", "诺克萨斯") # 可以帮我们添加
print(dic)
ret = dic.setdefault("及时雨123", "hello")
print(ret)
print(dic)
# 1. 首先判断原来的字典中有没有这个key . 如果没有. 执行新增
# 2. 用这个key去字典中查询, 返回查到的结果
dic = {"及时雨":"宋江", "易大师":"剑圣"}
ret = dic.setdefault("西门庆")
print(dic)
print(ret)
3. 字典的常用方法
1. keys() 返回所有字典的key的集合(高仿列表)
2. values() 返回所有的value的集合
3. items() 返回键值对. 元组
dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"}
print(dic.keys())
for i in dic.keys():
print(i)
print(dic.values())
for i in dic.values():
print(i)
print(dic.items())
for i in dic.items(): #返回得是("key","value")的多个元组
print(i)
for key,value in dic.items(): #返回的是多组两个字符串组成的数据
print(key,value)
解构:
a, b = (1, 2)
a, b = 1, 2
print(a, b)
(c, d) = 3, 4
print(c, d)
e, f = [1, 2, 3] # 解构的时候注意数量必须匹配
print(e, f)
3、字典的嵌套
dic1 = {
"name": "汪峰",
"age": 18,
"wife": {
"name": '章⼦怡',
"age": 28
},
"children": ['第⼀个⽑孩⼦', '第⼆个⽑孩⼦'],
"desc": '峰哥不会告我吧. 没关系. 我想上头条的'
}
print(dic1.get("wife").get("name"))
print(dic1.get("children"))
print(dic1.get("children")[1])
作业:
dic1 = {
'name':\['alex',2,3,5\],
'job':'teacher',
'oldboy':\{
'alex':\['python1','python2',100\]
\}
}
1,将name对应的列表追加⼀个元素’wusir’。
dic1["name"].append("wusir")
print(dic1)
2,将name对应的列表中的alex⾸字⺟⼤写。
dic1["name"][0]=dic1["name"][0].capitalize()
print(dic1)
3,oldboy对应的字典加⼀个键值对’⽼男孩’,’linux’。
法一:
dic1["oldboy"].setdefault("老男孩","linux")
print(dic1)
法二:
dic1["oldboy"]["老男孩"]="linux"
print(dic1)
4,将oldboy对应的字典中的alex对应的列表中的python2删除。
# 法一:
del dic1["oldboy"]["alex"][1]
print(dic1)
# 法二:
dic1["oldboy"]["alex"].pop(1)
print(dic1)
# 法三:
dic1["oldboy"]["alex"].remove("python2")
print(dic1)
作业:
有以下字符串,k:1|k1:2|k2:3|k3:4现将字符串转换成形式如{"k":1,"k1":2,"k2":3,"k3":4}的字典形式
# 法一:
dic={}
s="k:1|k1:2|k2:3|k3:4"
a=s.split("|")
for i in a:
b=i.split(":")
dic[b[0]]=b[1]
print(dic)
# 法二:
dic={}
s="k:1|k1:2|k2:3|k3:4"
a=s.split("|")
for i in a:
k,v=i.split(":")
dic[k]=v
print(dic)
将li=[11,22,33,44,55,66,77,88,99,90]中的大于66的数字存于字典的”k1”键中,其余的数字存于”k2”中
# 法一:
dic={"k1":[],"k2":[]}
li=[11,22,33,44,55,66,77,88,99,90]
for i in li:
if i>66:
dic["k1"].append(i)
else:
dic["k2"].append(i)
print(dic)
# 法二:
dic={}
li=[11,22,33,44,55,66,77,88,99,90]
for i in li:
if i > 66:
dic.setdefault("k1",[]).append(i) # 1、新增 2、查询
else:
dic.setdefault("k2",[]).append(i) # 1、新增 2、查询
print(dic)输出商品列表,用户输入商品序号,显示用户选中的商品
商品列表
goods=[{"name":"电脑","price":1999},
{"name":"鼠标","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":998},]
# 页面显示序号+商品+商品价格,用户输入选择的商品序号,然后打印商品名称和商品价格,如果用户输入有误,请提示重新输入,如果用户输入Q或者q时,程序退出
while True:
num=input("请输入你所要看商品的序号,不需要时请按‘Q’结束:")
if num.upper() == "Q":
break
elif int(num) >4:
print("请重新输入数字1-4")
continue
else:
print(int(num),goods[int(num)-1]["name"],goods[int(num)-1]["price"])
还没有评论,来说两句吧...