字典
一、主要内容:
1、dict 字典
用大括号{}括起来,内部使用key:value的形式来保存数据。
语法:{key1:value1,key2:value2...} 例如:{"陈长生":"鹿晗","徐有容":"古力娜扎","白落衡":"吴倩"}
#合法的 dic = {123:456,True:999,"id":1,"name":"sylar","age":18,"stu":["帅哥","美女"],(1,2,3):"马化腾"} print(dic[123]) print(dic[Ture]) print(dic["id"]) print(dic["stu"]) print(dic[(1,2,3)]) #不合法 dic = {[1,2,3]:"alex"} #list是可变的,不能做为key dic = {{1:2}:"张无忌"} #dict是可变的,不能作为key dic = {{1,2,3}:"周芷若"} #set是可变的,不能作为key
注意:字典的key必须是可哈希的,不可变的,value没有限制,可以保存任意类型的数据
不是按照我的保存的顺序来保存的,是按照hash表的顺序保存的。而hash表不是连续的,不能进行切片,只能通过key来获取dict中的数据。字典是无序的
2、增删改查
增:dict[不存在的key] = value、 setdefault()
dic = {} dic["name"] = "张无忌" #如果dict中没有出现这个key,就会新增一个key-value的组合进dict dic["age"] = 18 print(dic) #如果dict中没有出现这个key-value。可以通过setdefaul设置默认值 dic.setdefaule("张无忌") #此时添加的元素key对应的value没有值,默认为None dic.setdefaule("张无忌","周芷若") #如果dict中已经存在了key。setdefault将不会起作用 print(dic)
删:pop(kye)、del dict[key]、popitem()、clear()
ret = dic.pop("jay") #通过key值去删 print(ret) del dic["jay"] #通过key值去删 print(dic) ret = dic.popitem() #随机删除 print(ret) dic.clear() #清空字典 print(dic)
改:dict[不存在的key] = "新值"、d1.update(d2)-->把d2的值k-v更新到d1中
dic1 = {"id":"123","name":"sylar","age""18}
dic2 = {"id":"456","name":"马化腾","ok":"wtf"}
dic1.update(dic2) #把dic2中的内容更新到dic1中,如果key重名,则修改替换。如果不存在key,则新增
print(dic1)
print(dic2)
查:get(key,默认值)、setdefult()、dict[key]
dic = {'id': '456', 'name': '马化腾', 'age': 18, 'ok': 'wtf'}
print(dic["name"]) #通过key来查找value数据 print(dic.get("ok")) #通过get(key)查找value print(dic["sylar"]) #报错,不能直接用value查找
print(dic.get("sylar")) #输出None,如果没有key,默认输出None
print(dic.get("sylar","牛B")) #输出牛B,如果没有key,输出默认带的值
print(dic.setdufaule("张无忌","周芷若")) #先判断key是否存在在字典中,如果不存在,将先添加到字典中,然后在返回对应的value值;如果key存在在字典中将不做操作。
3、字典的常用方法
keys() #返回所有字典的key的集合(高仿列表)
dic = {"id":"123","name":"sylar","age""18}
print(dic.keys()) 
#dict_keys(["id","name","age"])不管他是什么就直接当list用
for key in dic.keys():
    print(key)
value() #返回所有字典的value的集合
dic = {"id":"123","name":"sylar","age""18}
prnt(dic.values())
#dict_values(["id","sylar","18"]) 一样当list来用
for value in dic.values():
    print(value)
items() #返回键值对,元组
dic = {"id":"123","name":"sylar","age""18}
print(dic.items())  #dict_items([("id",123),("name",sylar),("age",18)]) 这也是list,只不过list中装的是tuple
for key,value in dic.items():
    print(key,value)
解构:
a,b = 1,2 print(a,b) (c,d) = 3,4 print(c,d) e,f = [1,2,3] print(e,f) #报错ValueError: too many values to unpack (expected 2),解构时要注意数量的匹配
4、字典的嵌套
dic = { "naem":"张无忌", "age":30, "wife":{ "name":"赵敏", "age":28 }, "children":["大儿子","二儿子"], "desc":"我是明教教主" } print(dic.get("wife").get("name")) #查看张无忌老婆的名字 print(dic.get("children")) #查看张无忌的孩子 print(dic.get("children")[1]) #查看张无忌的二儿子
========================================================================================
二、可变和不可变的数据类型:
可变:不可哈希(可变)的数据类型:list,dict,set
不可变:可哈希(不可变)的数据类型:int,srt,tuple,bool
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号