1. 程式人生 > >字典的增刪改查和其他操作, 以及字典的巢狀

字典的增刪改查和其他操作, 以及字典的巢狀

1.字典

 

字典是以key:value的形式來儲存資料

用{}表示. 儲存的是key:value

 

2. 字典的增刪改查(重點)
    

        ① 新增

        dic[新key] = 值

dic = {"義大利": "李雲龍", "美國": "美國往事"}

dic["日本"] = "東京審判"  # 新key表示新增
dic['韓國'] = "釜山行"

    setdefault()

setdefault (難點)
 # 有新增的功能,如果key是存在的. 不新增
 # 流程: 判斷你給的key是否在字典中存在了.如果已經存在了. 就不再新增. 如果不存在. 執行新增操作

dic.setdefault("美國", "三傻大鬧寶萊塢")
print(dic)

      ②  刪除

        pop(key)

dic = {"張藝謀":"紅高粱", "李安":"斷臂山", "陳凱歌":"霸王別姬", "郭德綱":"祖宗十九代"}
dic.pop("郭德綱") # 你要記住的
dic.popitem() # 隨機刪除一項. 在python早期版本 字典是無序的. del dic["李安"] dic.clear() # 清空 print(dic)

 

     ③  修改


      dic[老key] = 值
      update() 跟新字典

dic = {"河南":"胡辣湯", "開封": "灌湯包", "武漢":"熱乾麵"}
# # dic['河南'] = "燴麵" # 老key = 值
# print(dic)

# dic1 = {"趙四":"劉曉光", "劉能":"王曉利", "王木生":"範偉"}
# dic2 = {"趙四":"寶寶", "劉能":"萌萌", "皮校長":"皮長山"} # # dic1.update(dic2) # 把dic2懟到dic1裡面. 把dict2中的內容更新到dic1 # print(dic1) # print(dic2)

 


     ④  查詢
           dic[key]
           get(key, 值)
        setdefault(key, value)

dic1 = {"趙四":"劉曉光", "劉能":"王曉利", "王木生":"範偉"}

# 1. 直接使用key就可以拿到value
# print(dic1["趙四四"]) # KeyError: '趙四四' key不存在


# 2. get(key)
# print(dic1.get("劉能能"))  # None 當key不存在返回None
# print(dic1.get("劉能能", "沒有這個人")) # 當key不存在. 返回第二個引數. 預設第二個引數是None

# 3. setdefault() 第一個功能是新增(當key不存在). 第二個功能是查詢(根據你給的key查詢)
# 整個執行流程: 判斷給的key是否存在. 如果存在. 就不執行新增流程.直接查詢出這個key對應的value
# 如果key不存在. 先執行新增操作. 再使用key把對應的value查詢出來
# ret = dic1.setdefault("皮長山", "皮校長")
# print(ret) # 皮校長

# ret = dic1.setdefault("王木生", "寶寶")
# print(ret) # 範偉


      ⑤  遍歷, 

            字典是一個可迭代物件

 

3. 字典的相關操作


  ① keys() 獲取到所有的鍵
  ② values() 獲取到所有的值
  ③ items() 拿到所有的鍵值對.
  ④ 字典的巢狀
            字典的巢狀. 字典套字典

wf = {
    "name":"汪峰",
    "age":52,
    "hobby":["唱歌", "上頭條", "穿皮褲"],
    "wife": {
        "name": "章子怡",
        "age": 49,
        "hobby":["演戲", "上電視", "當導師"],
        "tishen": {
            "name":"萌萌",
            "age":28
        },
        "zhuli":{
           "name":"磊磊",
           "age": 20
        }
    },
    "zhuli":{
        "name":"寶寶",
        "age":23,
        "hobby":["抽菸","喝酒","燙頭"]
    },
    "children":[{"name":"汪老大"}, {"name":"汪老二"}]
}
# wf['children'][1]["age"] = 2
# print(wf)
# # print(wf['zhuli']['name'])
#
# # 汪峰老婆替身的名字
# print(wf['wife']['tishen']['name'])
# # 汪峰老婆的第二個愛好
# print(wf['wife']['hobby'][1])
# # 汪峰助理的第三個愛好
# print(wf['zhuli']['hobby'][2])
#
#
# # 汪峰的助理+10歲
# wf['zhuli']['age'] = wf['zhuli']['age'] + 10
# # 汪峰的老婆新增一個愛好("導戲")
# wf['wife']['hobby'].append("導戲") # 新增完畢了
# # 刪除汪峰助理的"抽菸"愛好
# wf["zhuli"]["hobby"].remove("抽菸")
# print(wf)

 

5. 集合(不重要). 去重複


  集合中的元素是不重複的. 必須是可雜湊的(不可變), 字典中的key
  空集合:set()
  空元組:tuple()
  空列表:list()
  非空集合: {123}集合, 集合其實就是不存value的字典

 

 

 

思考題:

字串 "k:1|k1:2|k2:3|k3:4" 處理成字典 {'k':1,'k1':2....}  (升級題)



s = "k:1|k1:2|k2:3|k3:4"
li = s.split("|")
print(li)
dic = {}
for i in li:
    print(i)
    p = i.split(":")
    print(p)
    dic.setdefault(p[0],int(p[1]))
print(dic)