1.数据类型划分:
可变数据类型:字典,列表,集合
不可变数据类型:bool,int,str,元组
1.1 字典的key必须是不可变数据类型,value可以是任何数据类型
2.字典
2.1 优点:能存储大量的数据关系 利用二分查找去查询
2.2 特点:无序的
3.增
dic={"age":18,"name":"jin","sex":"male"}
dic["high"]=185 #没有键值对,添加到最后 {"age":18,"name":"jin","sex":"male","high":185}
dic["age"]=16 #如果有键,则值覆盖 {"age":16,"name":"jin","sex":"male"}
dic.setdefault("weight")
dic.setdefault("weight",150)
dic.setdefault("name","二哥") #有键,不做任何改变,没有才添加,与前者相反
4.删
dic={"age":18,"name":"jin","sex":"male"}
dic.pop("age") #有返回值,按键去删除
print(dic.pop("二哥","没有此键")) #有返回值,可以设置返回值
dic.popitem() #随机删除 有返回值 返回值是键和值组成的元组
dic.clear() #清空字典
del dic #删除字典
5.查询
dic={"age":18,"name":"jin","sex":"male"}
print(dic.keys()) #列表 dict_keys(['age', 'name', 'sex'])
print(dic.values()) #列表 dict_values([18, 'jin', 'male'])
print(dic.items()) #列表中键值对构成的元组
dict_items([('age', 18), ('name', 'jin'), ('sex', 'male')])
for i in dic:
print(i) #age name sex
for i in dic.keys():
print(i) #age name sex
for i in dic.values():
print(i) #18,jin,male
for i in dic.items():
print(i) #三个元组 ("age",18)("name","jin")("sex","male")
for k,v in dic.items():
print(k,v) #去掉元组的括号 age 18 name jin sex male
s=dic.get("age")
print(s) #18
s1=dic.get("agel","没有这个键")
print(s) #没有这个键 默认返回值None
6.改
dic={"age":18,"name":"jin","sex":"male"}
dic1={"name":"alex","weight":75}
dic1.update(dic) #更新到dic1 有键覆盖 没有添加
7.字典的嵌套
dic={"name":["alex","wusir","taibai"],
"py9":{"time":"1213",
"learn_money":19800,"addr":"CBD"}
"age":21}
dic["age"]=56 #"age":21改成"age":56
dic["name"].append("ritian") #"name":["alex","wusir","taibai","ritian"]
dic["name"][1]=dic["name"][1].upper() #"name":["alex","WUSIR","taibai"]
dic["py9"]["female"]=6 #"py9":{"time":"1213","learn_money":19800,"addr":"CBD","female":,6}
8.简单习题
有如下值li=[11,22,33,44,55,66,77,88,90]将所有大于66的值保存在字典的一个key中,将小于66的值保存在第二个key值中。
即{“k1":所有大于66值组成的列表,“k2”:所有小于66值组成的列表}。
li=[11,22,33,44,55,66,77,88,90]
dic={}
li1=[]
li2=[]
for i in li:
if i==66:
pass
elif i > 66:
li1.append(i)
else:
li2.append(i)
dic.setdefault("k1",li1) #dic["k1"]=li1
dic.setdefault("k2",li2) #dic["k2"]=li2
print(dic)
9.易错
删除字典中带k的键值对
错误解题方式:
dic={"k1":"v1","k2":"v2","a3":"v3"}
for i in dic:
if "k" in i:
del dic[i]
#在循环的字典中,不能删除字典的键
正确的解题方式:
dic={"k1":"v1","k2":"v2","a3":"v3"}
l=[]
for i in dic:
if "k" in i:
l.append(i)
for i in l:
del dic[i]