AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

Python字典的選擇之道:掌握六種類型的終極指南!

來源: 責(zé)編: 時(shí)間:2023-11-15 09:21:10 289觀看
導(dǎo)讀一、簡介你可能會(huì)驚訝地發(fā)現(xiàn),在Python的標(biāo)準(zhǔn)庫中實(shí)際上有6種不同的字典類型!在某些情況下,開發(fā)者可能不想使用標(biāo)準(zhǔn)的Python字典(dict),在本文中將討論P(yáng)ython中其他5種鮮為人知的字典。每種字典類型都是為特定需求而設(shè)計(jì)的。

一、簡介

你可能會(huì)驚訝地發(fā)現(xiàn),在Python的標(biāo)準(zhǔn)庫中實(shí)際上有6種不同的字典類型!在某些情況下,開發(fā)者可能不想使用標(biāo)準(zhǔn)的Python字典(dict),在本文中將討論P(yáng)ython中其他5種鮮為人知的字典。1Vj28資訊網(wǎng)——每日最新資訊28at.com

每種字典類型都是為特定需求而設(shè)計(jì)的。了解這些字典類型可以讓Python開發(fā)者選擇適合其特定需求的字典,從而提高編碼效率和靈活性。1Vj28資訊網(wǎng)——每日最新資訊28at.com

二、Python字典是什么?

在Python中,字典(dict)是一種內(nèi)置的數(shù)據(jù)結(jié)構(gòu),用于以鍵-值對的形式存儲(chǔ)數(shù)據(jù)集合。你可能聽過Python字典的其他名稱,如查找表、映射、哈希映射或關(guān)聯(lián)數(shù)組。1Vj28資訊網(wǎng)——每日最新資訊28at.com

Python字典的一個(gè)最全面的例子就是電話簿。可以使用電話簿快速檢索與給定姓名(鍵)相關(guān)聯(lián)的信息(值)。Python字典允許以最高效的方式存儲(chǔ)和檢索所需的數(shù)據(jù);這就是為什么Python dict是這種編程語言中最常用的數(shù)據(jù)類型。1Vj28資訊網(wǎng)——每日最新資訊28at.com

三、Python字典的類型

大多數(shù)Python開發(fā)者通常只使用標(biāo)準(zhǔn)字典(dict)。有趣的是,Python還提供了其他幾種內(nèi)置的字典數(shù)據(jù)結(jié)構(gòu)。盡管在大多數(shù)情況下,標(biāo)準(zhǔn)Python字典已經(jīng)足夠使用,但至少了解一下其他字典類型也會(huì)對開發(fā)者有所裨益。Python的不同字典類型如下:1Vj28資訊網(wǎng)——每日最新資訊28at.com

  1. dict
  2. collections.defaultdict
  3. collections.OrderedDict
  4. collections.ChainMap
  5. collections.Counter
  6. collections.UserDict

本文將逐個(gè)介紹每種類型的Python字典,并通過示例進(jìn)行解釋。1Vj28資訊網(wǎng)——每日最新資訊28at.com

3.1 dict

如前所述,Python中最常見的字典類型是標(biāo)準(zhǔn)類型(dict)。這種類型的Python字典可以使用花括號{}來輕松創(chuàng)建和更新。標(biāo)準(zhǔn)Python字典內(nèi)置了許多函數(shù),可以讓工作更加輕松。1Vj28資訊網(wǎng)——每日最新資訊28at.com

標(biāo)準(zhǔn)Python字典的使用示例標(biāo)準(zhǔn)Python字典的使用示例1Vj28資訊網(wǎng)——每日最新資訊28at.com

下面是代碼片段。1Vj28資訊網(wǎng)——每日最新資訊28at.com

a = {'one': 1, 'two':2}print(a,type(a))# output: {'one': 1, 'two': 2} <class 'dict'>a.update({'three': 3}) #  相當(dāng)于a['three'] = 3print(a)# output: {'one': 1, 'two': 2, 'three': 3}a['two'] = 2.1print(a['two'])# output: 2.1

請注意,Python字典中的值可以是任何類型,但鍵必須是唯一且不可變的。一般情況下,在標(biāo)準(zhǔn)Python字典中進(jìn)行查找、插入、更新和刪除操作的時(shí)間復(fù)雜度為O(1)。1Vj28資訊網(wǎng)——每日最新資訊28at.com

3.2 collections.defaultdict

Python中的另一種字典類型是defaultdict,可以從collections模塊中導(dǎo)入。Python defaultdict字典用于想從字典中調(diào)用一個(gè)不存在的鍵時(shí)返回一個(gè)默認(rèn)值。1Vj28資訊網(wǎng)——每日最新資訊28at.com

使用Python defaultdict的示例使用Python defaultdict的示例1Vj28資訊網(wǎng)——每日最新資訊28at.com

下面是代碼片段。1Vj28資訊網(wǎng)——每日最新資訊28at.com

from collections import defaultdicta = defaultdict(int)print(a['one'])# output:0a['one'] += 1print(a['one'])# output: 1

Python開發(fā)者在使用常規(guī)字典時(shí),通常使用get()方法或直接處理KeyError異常。在這種情況下,使用collections.defaultdict可以使開發(fā)者的意圖更加明確。1Vj28資訊網(wǎng)——每日最新資訊28at.com

3.3 collections.OrderedDict

collections.OrderedDict是Python 3.1中引入的一種Python字典子類。顧名思義,這種類型的Python字典可以記住鍵插入的順序。如果特別關(guān)心Python字典中鍵插入的順序,可以使用collections.OrderedDict。1Vj28資訊網(wǎng)——每日最新資訊28at.com

使用Python OrderedDict的示例使用Python OrderedDict的示例1Vj28資訊網(wǎng)——每日最新資訊28at.com

下面是代碼片段。1Vj28資訊網(wǎng)——每日最新資訊28at.com

from collections import OrderedDicta = OrderedDict({'one': 1, 'two': 2})print(a)# output: OrderedDict([('one', 1), ('two', 2)])a['three'] = 3print(a)# output: OrderedDict([('one', 1), ('two', 2), ('three', 3)])

collections.OrderedDict還有一個(gè)很酷的函數(shù),可以改變一些鍵的順序。可以使用move_to_end將其中一個(gè)鍵移到Python字典的末尾(last=True),或移到開頭(last=False):1Vj28資訊網(wǎng)——每日最新資訊28at.com

使用Python OrderedDict的示例使用Python OrderedDict的示例1Vj28資訊網(wǎng)——每日最新資訊28at.com

下面是代碼片段。1Vj28資訊網(wǎng)——每日最新資訊28at.com

from collections import OrderedDicta = OrderedDict({'one': 1, 'two': 2, 'three': 3, 'four': 4})print(a)# output: OrderedDict([('one', 1), ('two', 2)])a.move_to_end('one', last=True) # 將'one'移至末尾print(a)# output: OrderedDict([('two', 2), ('three', 3), ('four', 4), ('one', 1)])a.move_to_end('three', last=False) # 將'three'移到開頭print(a)# output: OrderedDict([('three', 3), ('two', 2),('four', 4),('one', 1)])

3.4 collections.ChainMap

另一種Python字典類型是collections.ChainMap,Python的ChainMap是一種類似字典的類,可以將多個(gè)字典合并為一個(gè)視圖。這種類型的字典允許開發(fā)者在多個(gè)字典中搜索一個(gè)鍵,就好像它們都合并成了一個(gè)單一的字典。1Vj28資訊網(wǎng)——每日最新資訊28at.com

使用Python ChainMap的示例使用Python ChainMap的示例1Vj28資訊網(wǎng)——每日最新資訊28at.com

下面是代碼片段。1Vj28資訊網(wǎng)——每日最新資訊28at.com

from collections import ChainMapa = {'one': 1, 'two': 2}b = {'three': 3, 'four': 4}c = {'five': 5, 'six': 6, 'three': 3.1}merged = ChainMap(a, b,c)print(merged)# output: ChainMap({'one': 1,'two': 2},                   {'three': 3, 'four': 4},                   {'five': 5, 'six': 6, 'three': 3.1})print(merged['three']) # 只返回關(guān)鍵字的第一次出現(xiàn)結(jié)果# output:3

請注意,ChainMap只會(huì)返回要搜索的鍵的第一次出現(xiàn)。另外還要記住,ChainMap只存儲(chǔ)對實(shí)際對象的引用;因此,如果在任何一個(gè)原始字典中進(jìn)行了更改,ChainMap也會(huì)隨之更新。1Vj28資訊網(wǎng)——每日最新資訊28at.com

使用Python ChainMap的示例使用Python ChainMap的示例1Vj28資訊網(wǎng)——每日最新資訊28at.com

下面是代碼片段。1Vj28資訊網(wǎng)——每日最新資訊28at.com

from collections import ChainMapa = {'one': 1, 'two': 2}b = {'three': 3, 'four': 4}c = {'five': 5, 'six': 6, 'three': 3.1}merged = ChainMap(a, b, c )a['one'] = 1.1print(merged['one'])# output: 1.1

3.5 collections.Counter

Counter是Python中另一個(gè)能夠計(jì)數(shù)可散列對象的字典。Python開發(fā)者通常使用collections.Counter來計(jì)算可迭代對象中元素的頻率;例如,可以使用這種類型的Python字典來計(jì)算句子中使用的單詞數(shù)量。1Vj28資訊網(wǎng)——每日最新資訊28at.com

使用Python Counter的示例使用Python Counter的示例1Vj28資訊網(wǎng)——每日最新資訊28at.com

下面是代碼片段。1Vj28資訊網(wǎng)——每日最新資訊28at.com

from collections import Countersentence = "we can't control our thoughts, but we can control our words"a = Counter(sentence.split(' '))print(a)# output: Counter(              {               'we': 2, 'control': 2, 'our': 2,               "can't": 1, 'thoughts': 1,               'but': 1, 'can': 1, 'words': 1              }          )print(a.most_common(2)) # 獲得2個(gè)出現(xiàn)次數(shù)最多的元素# output: [('we', 2), ('control', 2)]

如果需要列出出現(xiàn)頻率最高的n個(gè)元素及其計(jì)數(shù),從最常見到最不常見,可以在Counter對象上使用most_common函數(shù)。如果n為None,它將列出所有元素的計(jì)數(shù)。1Vj28資訊網(wǎng)——每日最新資訊28at.com

3.6 collections.UserDict

本文要討論的最后一種Python字典類型是UserDict字典。UserDict也是collections模塊提供的一個(gè)類。這個(gè)類設(shè)計(jì)成用作創(chuàng)建自定義字典類對象的基類。1Vj28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)需要定義自己的類似字典的數(shù)據(jù)結(jié)構(gòu)時(shí),可以使用collections.UserDict。想象一個(gè)簡單的場景,需要將每個(gè)值乘以5并保存在自定義的Python字典中。通過使用UserDict,可以像這樣實(shí)現(xiàn):1Vj28資訊網(wǎng)——每日最新資訊28at.com

使用Python UserDict的示例使用Python UserDict的示例1Vj28資訊網(wǎng)——每日最新資訊28at.com

下面是代碼片段。1Vj28資訊網(wǎng)——每日最新資訊28at.com

from collections import UserDictclass MyDict(UserDict):    def __setitem__(self, key, value):        super().__setitem__key, value * 5)d = MyDict({'one': 1, 'two': 2})print(d)#output: {'one': 5, 'two': 10}

還可以隨時(shí)覆蓋其他函數(shù),如__setitem__()、__getitem__()和__delitem__(),以進(jìn)一步自定義字典的行為。1Vj28資訊網(wǎng)——每日最新資訊28at.com

四、總結(jié)

在本文中,介紹了可以在不同情況下使用的不同類型的Python字典。盡管很多Python開發(fā)者只使用常規(guī)字典,但也可以在項(xiàng)目中嘗試使用其他類型的Python字典。如果沒有適合的字典,可以使用UserDict類來創(chuàng)建自己的類似字典的類。1Vj28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-25485-0.htmlPython字典的選擇之道:掌握六種類型的終極指南!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Python迭代器和生成器的實(shí)際應(yīng)用場景

下一篇: 歐盟理事會(huì)就數(shù)字身份問題達(dá)成臨時(shí)協(xié)議,將打造通用身份證明

標(biāo)簽:
  • 熱門焦點(diǎn)
  • Automa-通過連接塊來自動(dòng)化你的瀏覽器

    1、前言通過瀏覽器插件可實(shí)現(xiàn)自動(dòng)化腳本的錄制與編寫,具有代表性的工具就是:Selenium IDE、Katalon Recorder,對于簡單的業(yè)務(wù)來說可快速實(shí)現(xiàn)自動(dòng)化的上手工作。Selenium IDEKat
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 講故事上個(gè)月我寫過一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當(dāng)時(shí)用的是 GDIView + WinDbg 把問題搞定,前者用來定位泄露資源,后者用來定位泄露代碼,后面有朋友反
  • 三分鐘白話RocketMQ系列—— 如何發(fā)送消息

    我們知道RocketMQ主要分為消息 生產(chǎn)、存儲(chǔ)(消息堆積)、消費(fèi) 三大塊領(lǐng)域。那接下來,我們白話一下,RocketMQ是如何發(fā)送消息的,揭秘消息生產(chǎn)全過程。注意,如果白話中不小心提到相關(guān)代
  • 雅柏威士忌多款單品價(jià)格大跌,泥煤頂流也不香了?

    來源 | 烈酒商業(yè)觀察編 | 肖海林今年以來,威士忌市場開始出現(xiàn)了降溫跡象,越來越多不斷暴漲的網(wǎng)紅威士忌也開始悄然回歸市場理性。近日,LVMH集團(tuán)旗下蘇格蘭威士忌品牌雅柏(Ardbeg
  • 阿里大調(diào)整

    來源:產(chǎn)品劉有媒體報(bào)道稱,近期淘寶天貓集團(tuán)啟動(dòng)了近年來最大的人力制度改革,涉及員工績效、層級體系等多個(gè)核心事項(xiàng),目前已形成一個(gè)初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 攜眾多高端產(chǎn)品亮相ChinaJoy,小米帶來一場科技與人文的視聽盛宴

    7月28日,全球數(shù)字娛樂領(lǐng)域最具知名度與影響力的年度盛會(huì)中國國際數(shù)碼互動(dòng)娛樂展覽會(huì)(簡稱ChinaJoy)在上海新國際博覽中心盛大開幕。作為全球領(lǐng)先的科
  • 2299元起!iQOO Pad開啟預(yù)售:性能最強(qiáng)天璣平板

    5月23日,iQOO如期舉行了新品發(fā)布會(huì),除了首發(fā)安卓最強(qiáng)旗艦處理器的iQOO Neo8系列新機(jī)外,還在發(fā)布會(huì)上推出了旗下首款平板電腦——iQOO Pad,其搭載了天璣
  • 中關(guān)村論壇11月25日開幕,15位諾獎(jiǎng)級大咖將發(fā)表演講

    11月18日,記者從2022中關(guān)村論壇新聞發(fā)布會(huì)上獲悉,中關(guān)村論壇將于11月25至30日在京舉行。本屆中關(guān)村論壇由科學(xué)技術(shù)部、國家發(fā)展改革委、工業(yè)和信息化部、國務(wù)
  • 榮耀Magic4 至臻版 首創(chuàng)智慧隱私通話 強(qiáng)勁影音系統(tǒng)

    2022年第一季度臨近尾聲,在該季度內(nèi),許多品牌陸續(xù)發(fā)布自己的最新產(chǎn)品,讓大家從全新的角度來了解當(dāng)今的手機(jī)技術(shù)。手機(jī)是電子設(shè)備中,更新迭代十分迅速的一款產(chǎn)品,基
Top