字典是由key and value 構成,無序結構(不想列表那樣有固體位置);
note:key 是唯一的,沒有重復;
字典可以多級嵌套;
定義:
dict1 = { # 由等式構成 dict = { “key” : "value,....} "sid170" : "hbb", # :不能寫成“=” ; 結束要有 “,”. 'sid171' : "zheng", 'tid' : { # 嵌套 "key1" : {"key" : "value"} "tid01" : "wang", 'tid02' : "deng" } # 總體而言需要注意:1)何時用等號,何時用冒號;2)記得加逗號 }
操作:單級的操作
info = { # "sid1701" = "hbb", #錯誤的書寫方式:將:寫成= "sid170" : "hbb", 'sid171' : "zhang", 'sid172' : "tian" } print(info) # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian'} # add # info ["sid173"] : "新來的" # 錯誤:等號 寫成 冒號 # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian'} # info 'sid177' = 'sunwukong' # 錯誤:[] 寫成 “ ” info ["sid173"] = "新來的" # 感覺不好記呀 # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'sid173': '新來的'} print(info # revise info ["sid170"] = 'HBB' # 表達方式和新增相同,只是將舊的內容換掉 #{'sid170': 'HBB', 'sid171': 'zhang', 'sid172': 'tian', 'sid173': '新來的'} print(info) # delete info.pop ("sid173") # 標准刪除(建議這個) # {'sid170': 'HBB', 'sid171': 'zhang', 'sid172': 'tian'} print(info) del info ["sid172"] # 也能刪除,感覺不好就 # {'sid170': 'HBB', 'sid171': 'zhang', 'sid173': '新來的'} print(info) info.popitem() # 隨機刪除一個 # {'sid170': 'HBB'} print(info) info ["sid177"] = '孫悟空' info ['sid178'] = '白骨精' # 上面的東西太少了,再添加兩個 print(info)
# find someone print('sid178' in info) # 標准用法 (是否在其中) # True print('sid172' in info) # False print(info.get('sid177')) # 導出信息 # 孫悟空 print(info["sid178"]) # 導出信息 # 白骨精 # print(info["sid179"]) # 沒有的話顯示出錯 # KeyError: 'sid179' print(info.keys()) # 輸出 keys # dict_keys(['sid170', 'sid177', 'sid178']) print(info.values()) # 輸出 valuse # dict_values(['HBB', '孫悟空', '白骨精'])
操作:多級簡單操作
info = { "sid170" : "hbb", 'sid171' : "zhang", 'tid' : { "tid01" : "wang", "tid02" : "deng" } } # define print(info)
# add one info ["sid173"] = 'bao' print(info) # add more info_3 = { "nid" : { "nid01" : "li", 'nid02' : "jie" } } # info.update(info_3) # style 1 info.setdefault("sid",{"sid01":"li",'sid02':"zhang"}) # style 2 print(info) # difference bigger 兩種方式不同之處:1)表達的不同;2)作用的不同。具體下面 # revise info ["tid"]['tid01'] = "zhong" # 逐層去找,然后更改 print(info) # delete del info ["tid"]["tid02"] # 逐層去找,然后刪除 print(info) del info ["sid"] # 刪除一個層 print(info) # info.pop(["tid"]["tid01"]) # can't use # find print(info.get("tid")) # print(info.get(["tid"]["tid01"])) # can't use print('tid' in info) # True # print('tid01' in info) # False # can't use
操作3:多級復雜操作
1 info = { 2 "sid170" : "hbb", 3 'sid171' : "zhang", 4 'sid172' : "tian", 5 'tid' : { 6 "tid01" : "wang", 7 "tid02" : "deng" 8 } 9 } # 首先定義一個嵌套列表 10 print(info) # keys output # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'tid': {'tid01': 'wang', 'tid02': 'deng'}} 11 print(info.keys()) # values output # dict_keys(['sid170', 'sid171', 'sid172', 'tid']) 12 print(info.values()) # dict_values(['hbb', 'zhang', 'tian', {'tid01': 'wang', 'tid02': 'deng'}]) 13 14 info.setdefault( "did" ,{"did01":'zhou','did02':'li'}) # 新加一個嵌套關系,若原來沒有就增加進去 # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'tid': {'tid01': 'wang', 'tid02': 'deng'}, 'did': {'did01': 'zhou', 'did02': 'li'}} 15 info.setdefault( "tid" ,{"did01":'zhou','did02':'li'}) # 如果原來有,不做任何修(前一行代碼加*運行) #{'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'tid': {'tid01': 'wang', 'tid02': 'deng'} 16 print(info) 17 18 info_2 = { 19 "tid01" : "gu", 20 "tid03" : "zhuan", 21 } # 定義一個新的字典 22 print(info) # 舊結果字典 # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'tid': {'tid01': 'wang', 'tid02': 'deng'}, 'did': {'did01': 'zhou', 'did02': 'li'}} 23 print(info_2) # 新字典結果 # {'tid01': 'gu', 'tid03': 'zhuan'} 24 info.update(info_2) # 將新字典同步到舊字典 # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'tid': {'tid01': 'wang', 'tid02': 'deng'}, 'did': {'did01': 'zhou', 'did02': 'li'}, 'tid01': 'gu', 'tid03': 'zhuan'} 25 print(info) # 沒有的新增進去;已經有的不同的,更新掉(注意與setdefault的不同) 26 # 寫法不同;意義不同 27 print(info_2.items()) # 將字典的結果,按照列表輸出。 # dict_items([('tid01', 'gu'), ('tid03', 'zhuan')])
總結1: 操作類型一:
# style 1 of operation.
info ['sid174'] = "bao"
info ['sid171'] = "jian"
del info ['sid170']
print('sid171' in info)
總結2 操作類型二:dict.XXXX
info.pop("sid172") print(info) info.popitem() print(info) print(info.get("sid171")) print(info.keys()) print(info.values()) info.setdefault( "tid" ,{"did01":'zhou','did02':'li'}) print(info) info.update() print(info.items())
類型比較繁雜:
單級詞典;多級詞典。單機操作的情況,有的還不能用於多級(可能是我操作失誤,請指教)。
不同類型的操作。
最后的循環:
for i in info: print(i) print("---------line---------") print(i,info [i]) '''sid170 ---------line--------- sid170 hbb sid171 ---------line--------- sid171 zheng tid ---------line--------- tid {'tid01': 'wang', 'tid02': 'deng'}'''
需要慢慢消化呀。。。。