python字典操作詳解
python字典是一個無序、以鍵值對存儲的數據類型,數據關聯性強、唯一一個映射數據類型。鍵:必須是可哈希(不可變的數據類型:字元串、數字、元組、bool)值,並且是唯一的
None: none 是一個空對象,none是一個特殊的數據類型。而「 」,雙引號中間一個空格,是一個字元串對象
一、創建字典
字典由鍵和對應值成對組成。字典也被稱作關聯數組或哈希表。基本語法如下:
dict = {Alice: 2341, Beth: 9102, Cecil: 3258}
也可如此創建字典
dict1 = { abc: 456 }dict2 = { abc: 123, 98.6: 37 }
注意:
每個鍵與值用冒號隔開(:),每對用逗號分割,整體放在花括弧中({})。
鍵必須獨一無二,但值則不必。
值可以取任何數據類型,但必須是不可變的,如字元串,數或元組。
二、訪問字典里的值
把相應的鍵放入熟悉的方括弧,如下實例:
dict = {Name: Zara, Age: 7, Class: First};print ("dict[Name]: "+":"+dict[Name])print ("dict[Age]: ""+":"+dict[Age])
三、修改字典
向字典添加新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下實例:
dict = {Name: Zara, Age: 7, Class: First};dict[Age] = 8; # update existing entrydict[School] = "DPS School"; # Add new entry print("dict[Age]: "+":"+ dict[Age])print ("dict[School]: "+":"+dict[School])
四、刪除字典元素
能刪單一的元素也能清空字典,清空只需一項操作。
顯示刪除一個字典用del命令,如下實例:
dict = {Name: Zara, Age: 7, Class: First};del dict[Name]; # 刪除鍵是Name的條目dict.clear(); # 清空詞典所有條目del dict ; # 刪除詞典print("dict[Age]: "+":"+ dict[Age])print ("dict[School]: "+":"+dict[School])#但這會引發一個異常,因為用del後字典不再存在:dict[Age]:
五、字典鍵的特性
字典值可以沒有限制地取任何python對象,既可以是標準的對象,也可以是用戶定義的,但鍵不行。
兩個重要的點需要記住:
1)不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,後一個值會被記住,如下實例:
dict = {Name: Zara, Age: 7, Name: Manni};print("dict[Name]: "+":"+dict[Name])#以上實例輸出結果:#dict[Name]: Manni
2)鍵必須不可變,所以可以用數,字元串或元組充當,所以用列表就不行,如下實例:
dict = {[Name]: Zara, Age: 7};print("dict[Name]: ", dict[Name])#以上實例輸出結果:#TypeError: list objects are unhashable
六、字典內置函數&方法
Python字典包含了以下內置函數:
cmp(dict1, dict2) #比較兩個字典元素。len(dict) #計算字典元素個數,即鍵的總數。str(dict) #輸出字典可列印的字元串表示。type(variable) #返回輸入的變數類型,如果變數是字典就返回字典類型。
Python字典包含了以下內置方法:
radiansdict.clear() #刪除字典內所有元素radiansdict.copy() #返回一個字典的淺複製radiansdict.fromkeys() #創建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值radiansdict.get(key, default=None) #返回指定鍵的值,如果值不在字典中返回default值radiansdict.has_key(key) #如果鍵在字典dict里返回true,否則返回falseradiansdict.items() #以列表返回可遍歷的(鍵, 值) 元組數組radiansdict.keys() #以列表返回一個字典所有的鍵radiansdict.setdefault(key, default=None) #和get()類似, 但如果鍵不已經存在於字典中,將會添加鍵並將值設為defaultradiansdict.update(dict2) #把字典dict2的鍵/值對更新到dict里radiansdict.values() #以列表返回字典中的所有值
字典代碼練習:
print(|---歡迎進入通訊錄程序---||---1、 查詢聯繫人資料---||---2、 插入新的聯繫人---||---3、 刪除已有聯繫人---||---4、 退出通訊錄程序---|)addressBook={}#定義通訊錄while 1: temp=input(請輸入指令代碼:) if not temp.isdigit(): print("輸入的指令錯誤,請按照提示輸入") continue item=int(temp)#轉換為數字 if item==4: print("|---感謝使用通訊錄程序---|") break name = input("請輸入聯繫人姓名:") if item==1: if name in addressBook: print(name,:,addressBook[name]) continue else: print("該聯繫人不存在!") if item==2: if name in addressBook: print("您輸入的姓名在通訊錄中已存在-->>",name,":",addressBook[name]) isEdit=input("是否修改聯繫人資料(Y/N):") if isEdit==Y: userphone = input("請輸入聯繫人電話:") addressBook[name]=userphone print("聯繫人修改成功") continue else: continue else: userphone=input("請輸入聯繫人電話:") addressBook[name]=userphone print("聯繫人加入成功!") continue if item==3: if name in addressBook: del addressBook[name] print("刪除成功!") continue else: print("聯繫人不存在")
推薦閱讀:
※2018最新國外EI源刊SCI期刊徵稿發表寫作經驗分享
※CPU運行功耗和什麼相關?消耗的電能都去哪了?
※給長者的一封信
※第一章:計算機和網際網路 |《計算機網路:自頂向下方法》