python全棧開發-第五天
python_day_5
今日大綱:
1. dict
用大括號{} 括起來. 內部使用key:value的形式來保存數據
{‘jay‘:‘周傑倫‘, "jj":‘林俊傑‘}
註意:字典的key必須是可哈希的. 不可變的, value 沒有限制
不是按照我們保存的順序保存的, 無序的
2. 增刪改查
- dict[不存在的key] = value, setdefault()
- pop(key). del dict[key]. popitem(), clear()
- dict[存在的key] = 新值, d1.update(d2) 把d2的k-v更新到d1中
- get(key, 默認值), setdefault(), dict[key]
3. 字典的常用方法
- keys() 返回所有字典的key的集合(高仿列表)
- values() 返回所有的value的集合
- items() 返回鍵值對. 元組
解構:
a, b = (1, 2)
4. 字典的嵌套
05. 萬惡之源-基本數據類型(dict)
本節主要內容:
- 字典的簡單介紹
- 字典增刪改查和其他操作
- 字典的嵌套
?. 字典的簡單介紹
字典(dict)是python中唯?的?個映射類型.他是以{ }括起來的鍵值對組成. 在dict中key是
唯?的. 在保存的時候, 根據key來計算出?個內存地址. 然後將key-value保存在這個地址中.
這種算法被稱為hash算法, 所以, 切記, 在dict中存儲的key-value中的key‘必須是可hash的,
如果你搞不懂什麽是可哈希, 暫時可以這樣記, 可以改變的都是不可哈希的,
那麽可哈希就意味著不可變. 這個是為了能準確的計算內存地址?規定的.
已知的可哈希(不可變)的數據類型: int, str, tuple, bool
不可哈希(可變)的數據類型: list, dict, set
語法 :
{key1: value1, key2: value2....}
註意: key必須是不可變(可哈希)的. value沒有要求.可以保存任意類型的數據
dic = {‘jay‘:"周傑倫", "jj":"林俊傑", "eason":"陳奕迅"} print(dic) dic = {1: "馬化騰", False:"阿裏巴巴", "sylar":"帥的不行不行的", (1, "哈哈"): "元組", ["吼吼"]:"列表"} print(dic)
dict保存的數據不是按照我們添加進去的順序保存的. 是按照hash表的順序保存的. ?hash表
不是連續的. 所以不能進?切片?作. 它只能通過key來獲取dict中的數據
?. 字典的增刪改查和其他相關操作
1. 增加
# 字典的相關操作 # 增加 dict = {"name":"corn","age":21,"sex":"男","hobby":"pplay game","money":1000} dict["sex"] = "男" # 增加 如果key重復了. 會替換掉原來的value dict.setdefault("hobby","play game") # 如果字典中已經包含了這個key. 不再繼續保存
2. 刪除
#pop dic = {"牌牌":"你去哪裏了", "曉雪":"你快回來.", "雪雪": "又走了"} ret = dic.pop("曉雪") # 刪除一個元素. 返回這個元素的value值 print(ret) del dic["雪雪"] #del ret = dic.popitem() # 返回給你的是一個元組. print(ret) print(dic)
3. 修改
#1 dic = {"id":1, ‘name‘:‘李嘉誠‘, ‘money‘:10000000} # 李嘉誠賠了500 dic[‘money‘] = dic[‘money‘] - 500 # 用key去修改 print(dic) #2 dic1 = {"李晨":"範冰冰", "鄧超":"孫儷", "王祖藍":"李亞男"} dic2 = {"李晨":"張馨予", "鄭凱":"baby", "王寶強":"馬蓉"} dic1.update(dic2) # 把dic2中的內容更新到 dic1 , 如果存在了key. 替換. 如果不存在,添加 print(dic1) print(dic2)
4. 查詢
*查詢?般?key來查找具體的數據
#1 dic = {"及時雨":"宋江", "小李廣":"花榮", "黑旋風":"李逵", "易大師":"劍聖"} dic["大寶劍"] = "蓋倫" # 新增 dic["及時雨"] = "天老爺" # 修改 print(dic["易大師是個腦殘"]) # 查詢, 如果key不存在,報錯 print(dic.get("易大師", "余小C")) # 如果key不存在. 返回None get() #可以通過key來獲取value的值. 那麽如果key不存在. 返回None. #可以給出一個默認值. 當key不存在的時候返回默認值 #2 dic = {"及時雨":"宋江", "易大師":"劍聖"} dic.setdefault("及時雨", "諾克薩斯") # 可以幫我們添加 print(dic) ret = dic.setdefault("及時雨123", "hello") print(ret) print(dic) #3 #1. 首先判斷原來的字典中有沒有這個key . 如果沒有. 執行新增 #2. 用這個key去字典中查詢, 返回查到的結果 dic = {"及時雨":"宋江", "易大師":"劍聖"} ret = dic.setdefault("及時雨", "西門慶") print(dic) print(ret)
5. 其他相關操作
#1 dic = {"及時雨":"宋江", "易大師":"劍聖", "維恩":"暗影獵手"} print(dic.keys()) # 拿到所有的key, 返回key的集合. 像是列表. 但是不是列表 for key in dic.keys(): # 可以進行叠代循環 print(key) print(dic.values()) for value in dic.values(): print(value) #2 dic = {"及時雨":"宋江", "易大師":"劍聖", "維恩":"暗影獵手"} print(dic.items()) # 拿到鍵值對 # 遍歷dict for k, v in dic.items(): print(k , v) for k, v in dic.items(): # = item # (key, value) # print(item) # (key, value) print(k,v) # 解構 . 解包 a, b = (1, 2) print(a) print(b) a, b, c = ("馬化騰", "馬雲", "馬良") print(b) a, b = [1, 2] print(a, b)
三. 字典的嵌套.
dic = { "name":"汪峰", "age": 58, "wife":{ "name":"國際章", "salary": 180000, "age": 37 }, "children":[ {"name":"老大", "age": 18}, {"name":"老二", "age": 118} ] } print(dic["children"][1]["age"]) print(dic["wife"][‘salary‘])
四.字典的for循環.
dic = {1: ‘a‘, 2:‘b‘, 3:‘c‘} for a in dic: # 直接循環字典.拿到的是key print(a) print(dic[a])
python全棧開發-第五天