1. 什麼是字典
字典是用{}表示,以key:value的形式來儲存資料的,其查詢效率比較高
坑:
字典儲存資料時是用雜湊值來儲存的,演算法不能變(python的)
資料必須是可雜湊的(不可變的),字典中的key必須是可雜湊的(不可變的)
dic = {"jay":"周杰倫", "jj": "林俊杰", "jolin":"蔡依林"} print(dic[`jay`]) # 周杰倫 dic[`jay`] = "麻花藤" print(dic)#{`jay`: `麻花藤`, `jj`: `林俊杰`, `jolin`: `蔡依林`}
2. 字典的增刪改查
1. 新增
dic[新key] = 值
dic = {"義大利": "李雲龍", "美國": "美國往事"} dic["日本"] = "東京審判" # 新key表示新增 dic[`韓國`] = "釜山行" print(dic)#{`義大利`: `李雲龍`, `美國`: `美國往事`, `日本`: `東京審判`, `韓國`: `釜山行`}
setdefault()
有新增功能,dic.setdefault(“key”,”value”)
如果key是存在的則不新增.
流程:判斷你給的key是否存在於字典中,如果存在不新增.如果不存在,執行新增的操作.
2. 刪除
pop(key)
dic = {"張藝謀":"紅高粱", "李安":"斷臂山", "陳凱歌":"霸王別姬", "郭德綱":"祖宗十九代"} dic.pop("郭德綱") # pop(key) 刪除郭德綱 dic.popitem() # 隨機刪除一項. 在python早期版本 字典是無序的. del dic["李安"] del dic["key"] 刪除指定一項
dic.clear() 清空
3. 修改
dic[老key] = 值
dic = {"jay":"周杰倫", "jj": "林俊杰", "jolin":"蔡依林"} dic[`jay`] = "麻花藤" print(dic)#{`jay`: `麻花藤`, `jj`: `林俊杰`, `jolin`: `蔡依林`}
update() 更新字典
dic1 = {"趙四":"劉曉光", "劉能":"王曉利", "王木生":"範偉"} dic2 = {"趙四":"寶寶", "劉能":"萌萌", "皮校長":"皮長山"} dic1.update(dic2) # 把dic2懟到dic1裡面. 把dict2中的內容更新到dic1 print(dic1) print(dic2) #{`趙四`: `寶寶`, `劉能`: `萌萌`, `王木生`: `範偉`, `皮校長`: `皮長山`} #{`趙四`: `寶寶`, `劉能`: `萌萌`, `皮校長`: `皮長山`}
4. 查詢
dic[key] 直接使用key獲得value,如果key不存在則報錯
get(key, 值) dic.get(key,值) 如果輸入沒有的key則會返回值 如果沒有值 則返回預設的None
setdefault(key, value)
#第一個功能是新增(當key不存在). 第二個功能是查詢(根據你給的key查詢) # 整個執行流程: 判斷給的key是否存在. 如果存在. 就不執行新增流程.直接查詢出這個key對 #應的value # 如果key不存在. 先執行新增操作. 再使用key把對應的value查詢出來 dic1 = {"趙四":"劉曉光", "劉能":"王曉利", "王木生":"範偉"} ret = dic1.setdefault("皮長山", "皮校長") print(ret) # 皮校長 ret = dic1.setdefault("王木生", "寶寶") print(ret) # 範偉
5. 遍歷,字典是一個可迭代物件
dic = {"趙四":"劉曉光", "劉能":"王曉利", "王木生":"範偉"} # 1. 使用for迴圈直接遍歷字典的key for key in dic: print(key) print(dic[key]) # 2. 可以使用字典的items()+解構可以直接獲取到key和value for k, v in dic.items(): print(k) print(v)
3. 字典的相關操作
1. keys() 獲取到所有的鍵
2. values() 獲取到所有的值
3. items() 拿到所有的鍵值對
for k, v in dic.items(): # 遍歷字典最簡單的方案 # print(item) # (`趙四`, `劉曉光`) # k, v = item # 解構 # k = item[0] # v = item[1] print(k, v)
4. 字典的巢狀
字典的巢狀. 字典套字典
5. 集合(不重要). 去重複
集合中的元素是不重複的. 必須是可雜湊的(不可變), 字典中的key
空集合:set()
空元組:tuple()
空列表:list()
非空集合: {123}集合, 集合其實就是不存value的字典