一 字典?
定義:dict, 以{},表示.每一項用逗號隔開,內部元素用key:value的形式來保存數據.例如
{"jj":"林俊杰","jay':周杰倫"}
特點:查詢效率非常高,通過key來查找元素
內部使用key來計算一個內存地址(暫時),hash算法,key必須不可變的數據類型(key必須是可hash的數據類型)可hash就是不可變
已知的可hash數據:int str tuple bool
不可hash的類型:list dist set
語法 dict={key1:value1,key2;value2....}
注意;key必須是不可hash的(不可變的),value沒有要求(可以保存任意的數據)
? ? ? ?dict保存的數據不是按照我們添加進去的順序保存的. 是按照hash表的順序保存的. ?而hash表
? ? ?? 不是連續的. 所以不能進?行行切片?工作. 它只能通過key來獲取dict中的數據
二 新增
dic={} dic["徐崢"]="人在囧途" #如果dict中沒沒有key,就會新增一個key:value的組合進去 dic["黃渤"]="瘋狂的石頭" dic["王寶強"]="天下無賊" dic["王寶強"]="士兵突擊" #如果key已經存在.那么會替換掉原來的value dic.setdefault("黃丘生") dic.setdefault("黃丘生","無間道")# 如果key存在了 不會執行新增 print(dic)
三 刪除
dic = {"黃日華": "天龍八部", "呂頌賢": "笑傲江湖", "蘇有朋": "倚天屠記"} # #dic.pop("呂頌賢") #指定刪除 # dic.popitem()#隨即刪除 # dic.clear() # 清空字典 # print(dic)
四 修改
dic = {"劉能": "王小利", "趙四": "劉曉光", "王木生": "范偉", "謝大腳": "于月仙", "李大國": "小鬼"} dic['王木生'] = "劉偉" # print(dic)?替換 dic2 = {"劉能": "大陽哥", "趙四": "github", "王木生": "汪峰", "謝大腳": "馮提莫", "王大拿": "金老板"} dic.update(dic2) #相同的換掉,不一樣的加上去 print(dic)
五 查詢
dic={"劉能":"大陽哥","趙四":"github","王木生":"汪峰"} # #1.最直觀,直接用key # print(dic["劉能"])#當這個key不存在時會報錯 # # # 2.get # print(dic.get("謝大腳",))##沒有key返回none # # #3. # #setdefault(先新增 看看有沒有key,如果有就過,沒有執行新增 @根據key把值返回 dic={} dic["蓋倫"]="德瑪西亞之力" value = dic.setdefault("feiaona", "無雙劍姬") # 新增 value2 = dic.setdefault("蓋倫", "劉偉") # 由于已經存在了key。 所以新增不執行。 直接查詢結果 value3 = dic.setdefault("薇恩", "坑") print(dic)
相關操作
主要是遍歷字典
=相關操作 dic = {"汪峰": "大陸音樂半壁江山", "周杰倫": "亞洲音樂天王", "羅志祥": "亞洲舞王"} #print(dic.values()) #得到 dict_keys(['汪峰', '周杰倫', '羅志祥']) 像列表但不是列表 可以當列表來看(來用)#通過這種方法對字典的遍歷一個個都拿出來 #第一種方法: # for key in dic.keys(): # print(key) # 得到 key # print(dic[key]) #得到value daic[key]表示value#上邊是對key的遍歷 #對value的遍歷# print(dic.values()) # for value in dic.values(): # print(value)# 只能拿出value不能拿出key 也就這樣了#既然拿到key,拿到value #能不能一對一對拿#亦可以遍歷字典 # print(dic.items()) #items每一項 ; 拿到value和拿出key # for item in dic.items(): # print(item) #拿到元組類型的 # print(item[0],item[1]) #拿到key和value # # a,b=10,20 #結構\解包 元組列表都有 # print(a) # print(b)#這個也可以遍歷字典 # # print(dic.items()) # 拿到的是key和value for k, v in dic.items(): # 當需要遍歷字典. 在操作中涉及到key和value的時候.print(k) # 元組print(v)# 字典本身是一個可迭代對象,可以直接進行for循環 for el in dic: # 直接拿到keyprint(el)print(dic[el])
六 字典的嵌套
給個例子
wf = {"name": "汪峰","age": 48,"成名曲": "春天里","wife": {"name": "章子怡","age": 39,"工作": "演員"},"children":[{"num": "001", "name": "汪一", "hobby": "唱歌"},{"num": "002", "name": "汪二", "hobby": "演戲"} # wf['children'][1]['name']] }# wf['wife']['age'] = wf['wife']['age'] + 10 # print(wf)
?