python中字典的value可以为任意对象_Python学习入门(13)—字典
(本號正在連續(xù)推出以Python官網(wǎng)文檔為主線的系統(tǒng)學(xué)習(xí)Python的系列文章或視頻,感興趣的朋友們歡迎搜索關(guān)注。在這里學(xué)習(xí)Python事半功倍!本文及后續(xù)文章如無特別聲明均以Windows平臺作為演示平臺,Python版本為:3.8.1)
在Python中,映射類型用于表示可哈希的值集映射到任意對象集的映射關(guān)系,其中可哈希的值稱作鍵,鍵映射到的對象稱為值。映射類型是可變的,也就是可以刪除特定鍵值之間的映射關(guān)系,也可以將特定鍵映射到別的對象。目前,在Python中只內(nèi)置了一種映射類型:字典。除去那些不能哈希的類型的值(例如列表,字典和其他通過值而不是id比較的可變類型的值),其它值幾乎都可用作字典的鍵。同一字典內(nèi)的鍵是唯一的,不能重復(fù)的。用于鍵的數(shù)字類型遵循數(shù)字比較的一般規(guī)則:如果兩個數(shù)字鍵比較相等(比如1和1.0),那么它們被視為同一個鍵。(不過請注意,由于計算機將浮點數(shù)存儲為近似值,因此將它們用作字典鍵通常是不明智的。)
字典類型對象的構(gòu)造
字典對象可以通過將逗號分隔的鍵值對放置到{}內(nèi)或使用dict()構(gòu)造。其中dict()有三種形式:
- dict(**kwarg) 所有實參都是以關(guān)鍵字參數(shù)的形式傳遞。
- dict(mapping, **kwarg) 接受第一個為映射類型的參數(shù),其余(若有)都以關(guān)鍵字參數(shù)的形式傳遞。
- dict(iterable, **kwarg) 接受一個可迭代類型的位置參數(shù),此參數(shù)的元素必須是鍵值對,其余(若有)都以關(guān)鍵字參數(shù)的形式傳遞。
字典對象是按如下構(gòu)造的:
字典構(gòu)造示例如下:
【示例】 字典對象的創(chuàng)建
字典類型支持的操作
- list(d) 返回由字典d中所有鍵組成的列表。
- len(d) 返回字典d中鍵值對的個數(shù)。
- d[key] 返回字典d中對應(yīng)于鍵key的值。如果鍵不存在則報KeyError。如果定義dict的子類時定義了一個方法__missing__(),假設(shè)dSub為該子類的對象,且key在給對象中不存在,那么dSub[key]操作就會調(diào)用__missing__(),并將鍵key作為參數(shù)。然后該操作返回或引發(fā)由調(diào)用__missing__ (key)返回或引發(fā)的任何內(nèi)容。子類中不存在其他操作或方法調(diào)用__missing__()。如果沒有定義_missing__(),則dSub[key]會引發(fā)KeyError。在子類中__missing__()必須定義為一個方法,不能是一個實例變量。[注:子類的概念將在本系列后續(xù)文章中詳細介紹]
- d[key]=value 將字典d中鍵對應(yīng)的值設(shè)為value,如果鍵key存在,則用value更新對應(yīng)的值,否則插入鍵值對(key,value)。
- del d[key] 將字典中鍵key對應(yīng)的鍵值對移除,如果不存在該鍵則報KeyError。
- key in d 如果在字典中存在key則為True,否則為False。
- key not in d 如果在字典中不存在key則為True,否則為False。等同于not key in d。
- iter(d) 返回字典中鍵的一個迭代器。是iter(d.keys())的快捷方式。
- d.clear() 清除字典中所有鍵值對。
- d.copy() 返回字典d的一個淺拷貝。
- dict.fromkeys(iterable[, value]) 用來創(chuàng)建包含以itervale中元素為鍵value為值的鍵值對的字典,如果未指定value則鍵值對的值均為None。此方法是dict的類方法。
- d.get(key[, default]) 如果字典d包含鍵key,則返回鍵key對應(yīng)的值,否則返回default,如果沒有給定default則返回None。
- d.items() 返回字典的鍵值對的一個新視圖。
- d.keys() 返回字典的鍵的一個新視圖。
- d.pop(key[, default]) 如果key在字典d中,則從d中移除key對應(yīng)的鍵值對并返回其對應(yīng)的值,否則返回default。如果字典d中不存在鍵key并且沒有指定default,則報KeyError。
- d.popitem() 從字典d中移除并返回一個鍵值對。鍵值對的返回順序為后進先出,即后加入的鍵值對先返回。
- reversed(d) 返回字典d的鍵的一個逆序迭代器。
- d.setdefault(key[, default]) 如果鍵key在字典中,則返回其對應(yīng)的值,否則將鍵值對(key,default)插入到d中并返回default的值。default缺省為None。
- d.update([other]) 使用other中的鍵值對更新字典,對存在的鍵的值進行覆蓋,鍵不存在時插入鍵值對。返回None。其中other可以是字典對象,也可以是包含鍵值對的可迭代對象,或是關(guān)鍵字形式的參數(shù)。
- d.values() 返回字典d中值的一個新視圖。字典的一個值視圖和另一個值視圖的相等性比較總是返回False,包括自己和自己比較。
示例如下:
【示例】字典支持的操作
字典視圖對象
dict.keys()、dict.values()和dict.items()返回的對象是視圖對象。它們提供了字典項(鍵,值,鍵值對)的動態(tài)視圖,這意味著當(dāng)字典更改時,視圖也將隨著更改。
字典視圖對象支持如下操作:
- len(dictview) 返回字典視圖dictview中項的個數(shù)
- iter(dictview) 返回字典視圖的一個迭代器。迭代順序按鍵值對插入順序。當(dāng)字典在插入或刪除鍵值對時對視圖進行迭代會報RuntimeError或不能完整迭代所有項。[注:由于迭代順序是按鍵值對插入順序,因此可使用內(nèi)置函數(shù)zip()來產(chǎn)生鍵值對:pairs=zip(d.keys(),d.values())。另一種產(chǎn)生鍵值對的方法是:pairs = [(k, v) for (k, v) in d.items()]
- x in dictview 如果x在視圖dictview中則返回True,否則返回False
- reversed(dictview) 返回字典視圖的一個逆序迭代器,迭代順序按鍵值對插入順序的逆序。
字典視圖對象實例如下:
【示例】字典視圖支持的操作
[注] 鍵視圖是類似集合的視圖,因為它們項是唯一的并且是可哈希的。當(dāng)字典中所有鍵對應(yīng)的值都是可哈希的,則鍵值對就是唯一的,可哈希的,那么鍵值對視圖也是類似集合的視圖。由于值視圖中的項通常不是唯一的,所以值視圖不能視為與集合類似。對于類似集合的視圖,為抽象基類collections.abc.Set定義的所有操作都是可用的(例如==,
【結(jié)束】
總結(jié)
以上是生活随笔為你收集整理的python中字典的value可以为任意对象_Python学习入门(13)—字典的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 的工作空间查看_【工作推荐】裱花师、现金
- 下一篇: python如何统计字典里面健的数量_P