字典的定義和操作 (Python)


字典是由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'}'''

需要慢慢消化呀。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM