老生常談python字典用法
創(chuàng)建字典
python 創(chuàng)建字典可以使用 dict 函數(shù),或者使用花括號,用花括號的方式更為常見。
d = { "a": "Athens", "b": "Belgrade", "c": "Cairo" }
或者:
d = dict(a="Athens", b="Belgrade", c="Cairo")
遍歷
python 可以方便地遍歷字典的 keys, values ,或者在遍歷的時(shí)候獲得 key 和 value。下面的代碼演示了遍歷的方式:
for item in d.items(): print(item)
這種方式,每一個(gè) item 是一個(gè) tuple,包括 key 和 value。
('a', 'Athens') ('b', 'Belgrade') ('c', 'Cairo')
也可以在遍歷的時(shí)候通過兩個(gè)變量得到 key 和 value:
for k, v in d.items(): print(k, v)
如果只關(guān)心 keys:
for k in d.keys(): print(k)
如果只關(guān)心 values:
for v in d.values(): print(v)
訪問
使用 d[k] 的語法獲得 key 為 k 的值,如果 key 不存在,拋出 KeyError。比如剛才的字典中 print(d["a"])
得到 Athens,但如果是 d[“d”],因?yàn)椴⒉淮嬖?key 為 d 的項(xiàng),所以拋出 KeyError:
d = dict(a="Athens", b="Belgrade", c="Cairo") print(d["d"])
運(yùn)行代碼,拋出異常如下:
Traceback (most recent call last): File "d:/temporary/python dict demo/test.py", line 4, in <module> print(d["d"]) KeyError: 'd'
如果想避免拋出異常,有兩個(gè)方法:方法一是使用 get() 方法,沒有對應(yīng)的 Key 返回 None:
d = dict(a="Athens", b="Belgrade", c="Cairo") print(d.get("d"))
方法二是在使用前先通過 in 進(jìn)行判斷:
d = dict(a="Athens", b="Belgrade", c="Cairo") if "a" in d: print(d["a"])
修改
最簡單的方法,通過 d[key] = value 方法修改,如果 key 不存在,則新建一個(gè)字典項(xiàng):
d["a"] = "Atlanta"
update() 方法可使用一個(gè)字典來更新已有的字典,如果被更新的字典中己包含對應(yīng)的 key,那么原 value 會被覆蓋;如果被更新的字典中不包含對應(yīng)的 key,則該 key-value 對被添加進(jìn)去。例如如下代碼:
d = dict(a="Athens", b="Belgrade", c="Cairo") d.update({ "a": "Atlanta", "b": "Belgrade", "d": "Dehli" }) print(d)
運(yùn)行代碼,a 被替換,b 保持不變,c 被保留,d 被增加:
{'a': 'Atlanta', 'b': 'Belgrade', 'c': 'Cairo', 'd': 'Dehli'}
刪除
- clear() 方法刪除所有字典項(xiàng)
- del 刪除字典項(xiàng),如果 key 不存在,拋出 KeyError
- pop() 刪除對應(yīng)鍵值,如果 key 不存在,也拋出 KeyError,可以對不存在鍵的情況設(shè)置默認(rèn)值
示例:
del d["a"] print(d.pop("d", "none")) # 返回 none而不是KeyError
setdefault() 方法
setdefault() 方法在 key 已經(jīng)存在的時(shí)候返回對應(yīng)的值,如果 key 不存在,則根據(jù)第二個(gè)參數(shù) (default)增加 key-value pair,比如:
d.setdefault("a", "Atlanta") # 因?yàn)閍已經(jīng)存在,返回Athens d.setdefault("d", "Dehli") # 因?yàn)閐不存在,將d設(shè)為Dehli
- dict 用法和知識點(diǎn)總結(jié) 3.7 版本后,dict 能保存 key 的位置,3.7之前 key 是無序的,關(guān)心 key 的位置可以使用 SortedDict 數(shù)據(jù)結(jié)構(gòu)
- pop() / get() / setdefault() 三個(gè)方法可以設(shè)置 default 值,避免 KeyError
- 字典的 key 不可重復(fù)
到此這篇關(guān)于老生常談python字典用法的文章就介紹到這了,更多相關(guān)python字典用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)模擬時(shí)鐘代碼推薦
本文給大家匯總介紹了下使用Python實(shí)現(xiàn)模擬時(shí)鐘的代碼,一共3個(gè)例子,后兩個(gè)是基于QT實(shí)現(xiàn),有需要的小伙伴可以參考下2015-11-11Python PyQt5實(shí)現(xiàn)拖放效果的原理詳解
這篇文章主要為大家詳細(xì)介紹了Python PyQt5中拖放效果的實(shí)現(xiàn)原理與實(shí)現(xiàn)代碼,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-11-11Pandas Shift函數(shù)的基礎(chǔ)入門學(xué)習(xí)筆記
shift函數(shù)是對數(shù)據(jù)進(jìn)行移動的操作,下面這篇文章主要給大家介紹了關(guān)于Pandas Shift函數(shù)的基礎(chǔ)入門學(xué)習(xí)筆記,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11Python自動化測試之登錄腳本的實(shí)現(xiàn)
本文主要介紹了Python自動化測試之登錄腳本的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02keras 自定義loss損失函數(shù),sample在loss上的加權(quán)和metric詳解
這篇文章主要介紹了keras 自定義loss損失函數(shù),sample在loss上的加權(quán)和metric詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python+Django+MySQL實(shí)現(xiàn)基于Web版的增刪改查的示例代碼
這篇文章主要介紹了Python+Django+MySQL實(shí)現(xiàn)基于Web版的增刪改查的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-055分鐘教會你用Docker部署一個(gè)Python應(yīng)用
Docker是一個(gè)開源項(xiàng)目,為開發(fā)人員和系統(tǒng)管理員提供了一個(gè)開放平臺,可以將應(yīng)用程序構(gòu)建、打包為一個(gè)輕量級容器,并在任何地方運(yùn)行,下面這篇文章主要給大家介紹了關(guān)于如何通過5分鐘教會你用Docker部署一個(gè)Python應(yīng)用,需要的朋友可以參考下2022-06-06