亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

流暢的 Python - 2. 字典與集合

xuhong / 2486人閱讀

摘要:模塊中還有其他的映射類型,一個(gè)是有序字典,方法也有不同,它默認(rèn)刪除并返回最后一個(gè)元素。這使得他們的查找效率很高,受數(shù)據(jù)量影響很小。在字典和集合中,除了標(biāo)準(zhǔn)的字典和集合,之前只用到了有序字典。而在合適的場(chǎng)合,標(biāo)準(zhǔn)類型之外的字典和集合會(huì)更適合。

字典是我們經(jīng)常用到一種數(shù)據(jù)類型,而且也很方便。雖然用得很多,但是我對(duì)它的操作也僅限于取值,賦值,創(chuàng)建新字典。

首先出現(xiàn)是兩個(gè)抽象基類,為dict和其他泛映射類型定義了接口。然后是字典推導(dǎo),這個(gè)跟之前的列表推導(dǎo)差不多,不難。創(chuàng)建字典的方法也有很多,之前常用的也只是兩三種——直接把字典賦值給一個(gè)對(duì)象、使用dict()把其他序列轉(zhuǎn)為字典。

然后是字典的一個(gè)之前沒(méi)用過(guò)的方法setdefault,它用來(lái)處理找不到的鍵。而另一個(gè)相似的方法get我也不怎么用,都是用d[x]這樣的形式。

另一類型的字典,collections 模塊中的 defaultdict,可以替代上面的setdefault方法。創(chuàng)建時(shí)提供一個(gè)對(duì)象,在之后取某個(gè)鍵,但不存在時(shí)調(diào)用__getitem__方法返回某個(gè)默認(rèn)值。

后面的,依舊沒(méi)看完。明天看吧。


這次遇到了特殊方法__missing__,當(dāng)指定鍵不存在的時(shí)它就會(huì)被調(diào)用。所有映射類型都一樣,都是在找不到指定鍵時(shí)會(huì)調(diào)用它。但要注意的是,__missing__只會(huì)被__getitem__調(diào)用。

collections 模塊中還有其他的映射類型,一個(gè)是有序字典 OrderdDict,popitem方法也有不同,它默認(rèn)刪除并返回最后一個(gè)元素。ChainMap 對(duì)象容納多個(gè)映射對(duì)象,然后對(duì)其進(jìn)行查找的時(shí)候,它被當(dāng)作一個(gè)整體進(jìn)行查找。Counter 對(duì)象為鍵這樣一個(gè)整數(shù)計(jì)數(shù)器,「每次更新一個(gè)鍵的時(shí)候都會(huì)增加這個(gè)計(jì)數(shù)器」。書上一個(gè)例子是用來(lái)計(jì)算字符串中每個(gè)字符出現(xiàn)的次數(shù)。

UserDict 是用純 Python 把標(biāo)準(zhǔn) dict 實(shí)現(xiàn)了一遍,由于用戶繼承寫子類。它繼承自超類 MutableMapping。

關(guān)于字典,還有就是不可變映射類型了。types 模塊中的 MappingProxyType 就是這樣。它返回的是視圖,用戶不能對(duì)視圖進(jìn)行修改。但它是動(dòng)態(tài)的,對(duì)原映射的修改它可以看到。

之后就是集合了。這個(gè)數(shù)據(jù)類型也經(jīng)常用到,它支持集合推導(dǎo),跟之前的字典推導(dǎo)、列表推導(dǎo)差不多。它還有不可變的姊妹類型 frozenset。

在他們背后,底層實(shí)現(xiàn)是散列表。這使得他們的查找效率很高,受數(shù)據(jù)量影響很小。這是用空間換取的時(shí)間,而一開(kāi)始空間不會(huì)很大,當(dāng)數(shù)據(jù)量增大的時(shí)候,到一定程度,會(huì)把數(shù)據(jù)復(fù)制到新的更大的空間,所以集合的元素順序不穩(wěn)定。

在字典和集合中,除了標(biāo)準(zhǔn)的字典和集合,之前只用到了有序字典。而在合適的場(chǎng)合,標(biāo)準(zhǔn)類型之外的字典和集合會(huì)更適合。果然要多動(dòng)手啊。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/41567.html

相關(guān)文章

  • 流暢python讀書筆記-第三章Python 字典集合

    摘要:小總結(jié)標(biāo)準(zhǔn)庫(kù)里的所有映射類型都是利用來(lái)實(shí)現(xiàn)只有可散列的數(shù)據(jù)類型才能用作這些映射里的鍵值不用字典推導(dǎo)用處理找不到的鍵找不到鍵返回某種默認(rèn)值底層是與調(diào)用實(shí)現(xiàn)的字典插入更新原理其他大多數(shù)映射類型都提供了兩個(gè)很強(qiáng)大的方法和。 字典和集合 標(biāo)準(zhǔn)庫(kù)里的所有映射類型都是利用 dict 來(lái)實(shí)現(xiàn)的只有可散列的數(shù)據(jù)類型才能用作這些映射里的鍵(值不用) 可散列 一個(gè)對(duì)象是可散列的 它的散列值是不變的 對(duì)象...

    lvzishen 評(píng)論0 收藏0
  • 流暢python

    摘要:流暢的中有很多奇技淫巧,整本書都在強(qiáng)調(diào)如何最大限度地利用標(biāo)準(zhǔn)庫(kù)。常見(jiàn)的扁平序列包括,,等。數(shù)組支持所有跟可變序列有關(guān)的操作,包括和。和用于指定列表的區(qū)間,默認(rèn)是使用整個(gè)列表。但是元組的賦值不被允許,當(dāng)異發(fā)生時(shí) 流暢的python中有很多奇技淫巧,整本書都在強(qiáng)調(diào)如何最大限度地利用Python 標(biāo)準(zhǔn)庫(kù)。介紹了很多python的不常用的數(shù)據(jù)類型、操作、庫(kù)等,對(duì)于入門python后想要提升對(duì)p...

    Alan 評(píng)論0 收藏0
  • 流暢python讀書筆記-第一章Python 數(shù)據(jù)模型

    摘要:第一章數(shù)據(jù)類型隱式方法利用快速生成字典方法方法通過(guò)下標(biāo)找元素自動(dòng)支持切片操作可迭代方法與如果是一個(gè)自定義類的對(duì)象,那么會(huì)自己去調(diào)用其中由你實(shí)現(xiàn)的方法。若返回,則會(huì)返回否則返回。一個(gè)對(duì)象沒(méi)有函數(shù),解釋器會(huì)用作為替代。 第一章 python數(shù)據(jù)類型 1 隱式方法 利用collections.namedtuple 快速生成字典 import collections Card = coll...

    FullStackDeveloper 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<