日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2023-11-15 09:21:10 261觀看
導讀一、簡介你可能會驚訝地發現,在Python的標準庫中實際上有6種不同的字典類型!在某些情況下,開發者可能不想使用標準的Python字典(dict),在本文中將討論Python中其他5種鮮為人知的字典。每種字典類型都是為特定需求而設計的。

一、簡介

你可能會驚訝地發現,在Python的標準庫中實際上有6種不同的字典類型!在某些情況下,開發者可能不想使用標準的Python字典(dict),在本文中將討論Python中其他5種鮮為人知的字典。PCu28資訊網——每日最新資訊28at.com

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

二、Python字典是什么?

在Python中,字典(dict)是一種內置的數據結構,用于以鍵-值對的形式存儲數據集合。你可能聽過Python字典的其他名稱,如查找表、映射、哈希映射或關聯數組。PCu28資訊網——每日最新資訊28at.com

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

三、Python字典的類型

大多數Python開發者通常只使用標準字典(dict)。有趣的是,Python還提供了其他幾種內置的字典數據結構。盡管在大多數情況下,標準Python字典已經足夠使用,但至少了解一下其他字典類型也會對開發者有所裨益。Python的不同字典類型如下:PCu28資訊網——每日最新資訊28at.com

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

本文將逐個介紹每種類型的Python字典,并通過示例進行解釋。PCu28資訊網——每日最新資訊28at.com

3.1 dict

如前所述,Python中最常見的字典類型是標準類型(dict)。這種類型的Python字典可以使用花括號{}來輕松創建和更新。標準Python字典內置了許多函數,可以讓工作更加輕松。PCu28資訊網——每日最新資訊28at.com

標準Python字典的使用示例標準Python字典的使用示例PCu28資訊網——每日最新資訊28at.com

下面是代碼片段。PCu28資訊網——每日最新資訊28at.com

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

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

3.2 collections.defaultdict

Python中的另一種字典類型是defaultdict,可以從collections模塊中導入。Python defaultdict字典用于想從字典中調用一個不存在的鍵時返回一個默認值。PCu28資訊網——每日最新資訊28at.com

使用Python defaultdict的示例使用Python defaultdict的示例PCu28資訊網——每日最新資訊28at.com

下面是代碼片段。PCu28資訊網——每日最新資訊28at.com

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

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

3.3 collections.OrderedDict

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

使用Python OrderedDict的示例使用Python OrderedDict的示例PCu28資訊網——每日最新資訊28at.com

下面是代碼片段。PCu28資訊網——每日最新資訊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還有一個很酷的函數,可以改變一些鍵的順序。可以使用move_to_end將其中一個鍵移到Python字典的末尾(last=True),或移到開頭(last=False):PCu28資訊網——每日最新資訊28at.com

使用Python OrderedDict的示例使用Python OrderedDict的示例PCu28資訊網——每日最新資訊28at.com

下面是代碼片段。PCu28資訊網——每日最新資訊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是一種類似字典的類,可以將多個字典合并為一個視圖。這種類型的字典允許開發者在多個字典中搜索一個鍵,就好像它們都合并成了一個單一的字典。PCu28資訊網——每日最新資訊28at.com

使用Python ChainMap的示例使用Python ChainMap的示例PCu28資訊網——每日最新資訊28at.com

下面是代碼片段。PCu28資訊網——每日最新資訊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']) # 只返回關鍵字的第一次出現結果# output:3

請注意,ChainMap只會返回要搜索的鍵的第一次出現。另外還要記住,ChainMap只存儲對實際對象的引用;因此,如果在任何一個原始字典中進行了更改,ChainMap也會隨之更新。PCu28資訊網——每日最新資訊28at.com

使用Python ChainMap的示例使用Python ChainMap的示例PCu28資訊網——每日最新資訊28at.com

下面是代碼片段。PCu28資訊網——每日最新資訊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中另一個能夠計數可散列對象的字典。Python開發者通常使用collections.Counter來計算可迭代對象中元素的頻率;例如,可以使用這種類型的Python字典來計算句子中使用的單詞數量。PCu28資訊網——每日最新資訊28at.com

使用Python Counter的示例使用Python Counter的示例PCu28資訊網——每日最新資訊28at.com

下面是代碼片段。PCu28資訊網——每日最新資訊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個出現次數最多的元素# output: [('we', 2), ('control', 2)]

如果需要列出出現頻率最高的n個元素及其計數,從最常見到最不常見,可以在Counter對象上使用most_common函數。如果n為None,它將列出所有元素的計數。PCu28資訊網——每日最新資訊28at.com

3.6 collections.UserDict

本文要討論的最后一種Python字典類型是UserDict字典。UserDict也是collections模塊提供的一個類。這個類設計成用作創建自定義字典類對象的基類。PCu28資訊網——每日最新資訊28at.com

當需要定義自己的類似字典的數據結構時,可以使用collections.UserDict。想象一個簡單的場景,需要將每個值乘以5并保存在自定義的Python字典中。通過使用UserDict,可以像這樣實現:PCu28資訊網——每日最新資訊28at.com

使用Python UserDict的示例使用Python UserDict的示例PCu28資訊網——每日最新資訊28at.com

下面是代碼片段。PCu28資訊網——每日最新資訊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}

還可以隨時覆蓋其他函數,如__setitem__()、__getitem__()和__delitem__(),以進一步自定義字典的行為。PCu28資訊網——每日最新資訊28at.com

四、總結

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

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python迭代器和生成器的實際應用場景

下一篇: 歐盟理事會就數字身份問題達成臨時協議,將打造通用身份證明

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 阳信县| 高平市| 巴青县| 亳州市| 康乐县| 凤台县| 通榆县| 磐石市| 彭山县| 贵德县| 大连市| 调兵山市| 巫溪县| 石泉县| 宁阳县| 荆门市| 文山县| 定日县| 内丘县| 玛沁县| 景宁| 营山县| 游戏| 筠连县| 安陆市| 阆中市| 桂林市| 平湖市| 砀山县| 东阳市| 屏边| 凌云县| 富锦市| 丰县| 巴青县| 杂多县| 荥经县| 苍溪县| 新密市| 民权县| 康保县|