目錄
9.2.1 字典的操作
9.2.2 字典的查找
9.2.3 字典的修改
9.2.4 字典的添加
9.2.5 字典的刪除
9.2.6?今天你逛街了嗎
9.2.1 字典的操作
字典類型是一種抽象數據類型,抽象數據類型定義了數據類型的操作方法,在本節的內容中,教同學們徹底掌握字典類型的常用操作方法。
字典的常用操作方法,主要有分為四類:字典的查找,字典的修改,字典的添加,字典的刪除。
9.2.2 字典的查找
(1) 查找鍵名是否存在
查找方法:
1. key in dict ?
2. key not in dict
key表示字典的鍵名,如果鍵名存在,則返回True,否則返回False。not in 表示是否不存在的意思。
代碼實例:
#?__desc__?=?通過in操作符,查找鍵是否存在?#?定義一個字典對象
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?查找book中是否存在price的鍵名,如果存在則返回True
if?"price"?in?book:??print("there?is?a?key?named?price?in?book")?#?通過not?in?來查找鍵是否不存在,如果不存在則返回True
if?"price"?not?in?book:??print("there?is?no?key?named?price?in?book")
(2) 查找鍵所對應的鍵值
查找方法:
1. dict[key]
key表示字典的鍵名,如果鍵名存在,會返回鍵值,如果鍵名不存在,則拋出異常。
2. dict.get(key, default=None)
key表示字典的鍵名,如果鍵名存在,會返回鍵值,如果鍵名不存在,則返回參數default指定的值。
操作符[]在列表和元組中用來進行索引訪問和切片,在字典中,用來進行鍵值訪問,修改鍵值,添加鍵值對。
代碼實例:
#?__desc__?=?通過[]操作符來獲取鍵值?
#?定義一個字典對象
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?#?直接通過[]操作符獲取鍵值
price?=?book["price"]
#?在執行上文代碼時拋出異常,因為鍵名"price"并不存在?
#?可以先通過in操作來查找鍵名是否存在,來避免拋出異常
if?"price"?in?book:??#?如果存在鍵名"price",則通過[]操作符獲取鍵值??price?=?book["price"]
字典類型的get方法會先自動判斷鍵名是否存在,避免了鍵名不存在時的錯誤異常。
代碼實例:
#?__desc__?=?通過字典類型的get方法來獲取鍵值?
#?定義一個字典對象
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?執行get方法時,指定default參數的值為0
#?如果鍵名不存在,那么會返回在default參數中指定的值
price?=?book.get("price",?0)?
#?price的輸出為0
(1) 查找字典的所有鍵名
操作語法:
dict.keys()
字典類型的keys方法返回的是一個dict_keys類型,dict_keys是一個可迭代對象,我們可以在for循環中進行遍歷。
代碼實例:
#?__desc__?=?通過字典類型的keys方法來獲取所有鍵名?
#?定義一個字典對象
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?在for循環中遍歷字典的鍵值
for?name?in?book.keys():??#?name是一個變量,Python會自動將鍵名賦值給變量name??print(book[name])?"""程序的輸出為:
"108節課徹底學通Python"
"薯條老師"
"""
可將dict_keys類型通過顯示類型轉換,轉換為列表或元組類型。例如list(dict_keys)或者tuple(dict_keys)。同學們在進行學習的時候,要多進行發散性思考。
(2)?查找字典中的所有鍵值
操作語法:
dict.values()
字典類型的values方法返回的是一個dict_values類型,dict_values是一個可迭代對象,同樣可以在for循環中進行遍歷。
代碼實例:
#?__desc__?=?通過字典類型的values方法來獲取所有鍵值?
#?定義一個字典對象?
book=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?#?在for循環中遍歷字典的鍵值
for?value?in?book.values():??#?value是一個變量,Python會自動將鍵值賦值給變量value??print(value)?"""程序的輸出為:
"108節課徹底學通Python"
"薯條老師"
"""
(5) 查找字典的所有鍵值對
在字典類型的keys與values方法中,只能單獨地獲取鍵名或鍵值。想必同學們會有這樣的疑問,可不可以一次性獲取鍵名和鍵值?
通過字典類型的items方法,可以返回字典中的鍵值對。字典類型的items方法返回的是一個dict_items類型。dict_items是一個可迭代對象,現在編寫一段代碼,在for循環中同時獲取鍵名和鍵值。
代碼實例:
#?__desc__?=?通過字典類型的items方法來獲取鍵值對?
#?定義一個字典對象
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?#?同學們須注意遍歷鍵名與鍵值的語法
for?name,?value?in?book.items():??print(name,?"-->",?value)??"""程序的輸出為:
name-->108節課徹底學通Python
author-->薯條老師
"""
9.2.3 字典的修改
Python中字典的鍵是只讀的,修改的是鍵名對應的鍵值。
(1)?修改字典的鍵值
操作語法:
dict[key]?=?value
key表示鍵名,value表示鍵值。鍵名不存在時,會插入新的鍵值對。
9.2.4 字典的添加
(1) 操作符:[]
操作語法:
dict[new_key]?=?value
new_key表示新的鍵名,value表示鍵值。
代碼實例:
#?__desc__?=?通過操作符[]來添加新的鍵值對?
#?定義一個空的字典對象
book?=?{}?
book["author"]?=?"薯條老師"
#?book的輸出為{'author':?'薯條老師'}
(2) dict.setdefault(key, default=None)
參數key表示鍵名,如果鍵存在,會返回鍵所對應的鍵值,否則添加一個新的鍵值對。通過參數default來指定新鍵的鍵值,返回值為鍵名所對應的鍵值,如果未指定鍵值,則返回值為None。
代碼實例:
#?__desc__?=?通過setdefault方法來添加新的鍵值對?
#?定義一個空的字典對象
book?=?{}?
#?未通過default參數指定鍵值
returned_value?=?book.setdefault("author")
#?returned_value的值為None
#?book的輸出為{'author':?None}?#?通過default參數指定鍵值
returned_value?=?book.setdefault("price",?66)
#?returned_value的值為66
#?book的輸出為{'author':?None,?'price':?66}
(3) dict.update(iterable)
iterable表示可迭代對象,傳遞的參數主要為字典類型,列表類型,元組類型,無返回值。通過字典對象來更新字典時,如果鍵名存在,則字典對象中鍵名的鍵值被更新為新的鍵值,如果鍵名不存在,添加新的鍵值對。通過列表,元組來更新字典時,列表/元組是二維的結構,具體可看代碼實例。
代碼實例:
#?__desc__?=?通過setdefault方法來添加新的鍵值對?
#?定義一個空的字典對象book?=?{}?
#?通過字典來更新字典
book.update({"name":?"108節課徹底學通Python",?"author":?"薯條橙子"})?
"""?book的輸出為:
{"name":?"108節課徹底學通Python",?"author":?"薯條橙子"}
"""?#?通過列表或元組來更新字典時,列表與元組是一個二維的結構
#?Python會將元組中的第一個元素作為鍵名,第二個元素作為鍵值
#?元組中只存在一個數據項時,不要遺漏逗號
book.update((("price",?69),))?
"""?book的輸出為:
{"name":?"108節課徹底學通Python",?"author":?"薯條橙子",?"price":?69}
"""
9.2.5 字典的刪除
(1) dict.pop(key)
pop方法用來刪除指定的鍵,待刪除的鍵必須存在于字典對象中,否則會拋出鍵名不存在的錯誤異常,返回值為鍵名對應的鍵值。
代碼實例:
#?__desc__?=?通過pop方法來刪除鍵?
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?刪除鍵時,可以先通過in操作符來判斷鍵名是否存在?
if?"price"?in?book:??#?如果存在price鍵,就執行pop方法來刪除??#?返回值為鍵名所對應的鍵值??price?=?book.pop("price")
(2) dict.popitem()
popitem方法用來刪除字典中的鍵值對,默認刪除字典末尾的鍵值對。方法的返回值為一個元組,元組的第一個元素為鍵名,第二個元素為鍵值。
代碼實例:
#?__desc__?=?通過popitem方法來刪除鍵值對?
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?popitem方法的返回值為元組類型
item?=?book.popitem()?#?元組的第一個元素為鍵名,第二個元素為鍵值
#?可通過索引來進行訪問,?索引編號為0的是鍵名,編號為1的是鍵值
name?=?item[0]
value?=?item[1]#?也可以利用元組的自動解包來賦值
name,?value?=?item
(3)?dict.clear()
通過字典類型的clear方法來一鍵刪除字典中的所有鍵,無返回值
代碼實例:
#?__desc__?=?通過clear方法來清空字典?
book?=?{"name":?"108節課徹底學通Python",?"author":?"薯條老師"}?
#?執行clear方法來清空字典book.clear()
#?執行clear方法后,book的輸出為{}
9.2.6?今天你逛街了嗎
跟薯條老師學高級爬蟲(JS逆向+安卓逆向),數據分析,數據科學,金融量化交易,以及機器學習+深度學習+大模型算法。堅持下去,你一定會成為高手。
薯條老師的學生在南方電網,林氏家居,京東,阿里等大廠。薯條老師的個人技術博客:Python神仙級入門教程-零基礎學習數據分析,高級爬蟲,機器學習+大模型算法。對本節教程有任何不懂的同學,亦可在評論區中進行評論。