1. 程式人生 > >python全棧開發-第五天

python全棧開發-第五天

spa pre date 可變 col 結果 阿裏巴巴 lse 範冰冰

python_day_5

今日大綱:

1. dict
用大括號{} 括起來. 內部使用key:value的形式來保存數據
{‘jay‘:‘周傑倫‘, "jj":‘林俊傑‘}
註意:字典的key必須是可哈希的. 不可變的, value 沒有限制
不是按照我們保存的順序保存的, 無序的
2. 增刪改查

  1. dict[不存在的key] = value, setdefault()
  2. pop(key). del dict[key]. popitem(), clear()
  3. dict[存在的key] = 新值, d1.update(d2) 把d2的k-v更新到d1中
  4. get(key, 默認值), setdefault(), dict[key]

3. 字典的常用方法

  1. keys() 返回所有字典的key的集合(高仿列表)
  2. values() 返回所有的value的集合
  3. items() 返回鍵值對. 元組

解構:
a, b = (1, 2)

4. 字典的嵌套

05. 萬惡之源-基本數據類型(dict)
本節主要內容:

  1. 字典的簡單介紹
  2. 字典增刪改查和其他操作
  3. 字典的嵌套

?. 字典的簡單介紹
字典(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全棧開發-第五天