Python程式設計:詳述內建字典(dict)子類別及應用(一網打盡)
前言
本主要介紹Python集合模組中幾個字典類別(dict)的內建擴充子類別的應用場景和使用範例,還是結合程式碼,讓你能「短平快」的來掌握這些跟dict直接關聯的子類別-OrderedDict、defaultdict、userDict。
OrderedDict
Python集合模組中的有序字典(OrderedDict)就像普通字典一樣,但有一些與排序操作相關的額外功能。 OrderedDict會記住鍵插入的順序。現在它們變得不那麼重要了,因為內建的dict類別獲得了記住插入順序的能力(這種新行為在Python 3.7中得到了保證,因此OrderedDict現在顯得不是那麼重要了)。建立有序字典的常規格式:
import collections ordDict = collections.OrderedDict([items]):
或
from collections import OrderedDict ordDict = OrderedDict([items]):
這樣就創建並返回dict子類別的實例OrderedDict對象,該子類別具有專門用於重新排列字典順序的方法。本文就來簡單介紹這些方法。
1)popitem(last=True):
#有序字典的popitem()方法傳回並刪除一個(key,value)對。若last為True,則以LIFO(後進先出)方式傳回對應的鍵值對;否則以FIFO(先進先出)順序傳回。
2)move_to_end(key, last=True):
將現有鍵移到有序字典的任一端。如果last為True(預設值),則將項目移到右端;如果last為False,則移到開頭。如果key不存在會引發KeyError。
請看程式碼:
假設我們刪除並重新插入相同的鍵到OrderedDict。它將把這個鍵放到末尾,以保持鍵的插入順序。範例如下:
運行結果如下:
删除前的OrderedDict: x X y Y z Z 插入后的OrderedDict: y Y z Z x X
UserDict
UserDict類別用作Python內建字典(dict)物件的包裝器。這個類別的需求已經部分被直接從dict繼承子類別的能力所取代;但是,這個類別比較容易使用,因為底層字典可以作為屬性來存取。當你希望使用一些修改過的或新功能來建立自己的字典時,可使用UserDict。其使用格式如下:
import collections userDict = collections.UserDict([initialdata])
或
import collections userDict = collections.UserDict([initialdata])
此類模擬字典,其實例的內容保存在一個常規字典中,可以透過UserDict實例的data屬性存取該字典。如果提供了initialdata,則用此初始化data內容;注意,實例本身不會單獨保留對initialdata的參考(非獨佔),是允許它用於其他目的。
除了支援映射的方法和操作之外,UserDict實例提供以下屬性:
1)data
一個用於儲存UserDict類別內容的真正字典。範例如下:
輸出結果如下:
{'name': 'Kevin Cui', 'age': 24}
#假設我們想要定義一個支援加法運算的自訂字典物件(合併兩個字典)。當我們新增自訂字典的兩個實例時,我們希望得到一個包含兩個字典中所有元素的新字典。請記住,如果你試圖加入Python中的常規字典,則會得到TypeError。讓我們在UserDict的幫助下實現它:
運行輸出結果如下:
{'x': 10, 'y': 20}
當然,你也可以自己實作它相關的自訂操作。
DefaultDict
Python中Dictionary類別的常見問題是缺少鍵。當試圖存取字典中不存在的按鍵時,將會得到一個KeyError異常。所以每當你需要存取字典中的元素時,你就必須處理這種情況。幸運的是,Python提供了DefaultDict類別。它用於為不存在的鍵提供一些預設值且不引發KeyError。
DefaultDict是內建dict類別的子類別。它覆蓋一個方法並添加一個可寫實例變數。其餘的功能與dict相同。使用格式如下:
import colloections defaultDict = collections.defaultdict(default_factory=None, /[,…])
上述程式碼傳回一個新的類別字典物件DefaultDict,它是內建dict類別的子類別。
第一個參數為default_factory屬性提供初始值,預設為None。所有剩餘的參數都被當作傳遞給dict建構函數一樣對待,包括關鍵字參數。需要了解的是若提供該參數,則須是可呼叫的。
DefaultDict物件除了支援標準的dict操作外,還支援下列方法屬性:
1)__missing__(key):
如果default_factory屬性為None,用鍵作為參數將引發一個KeyError異常。
如果default_factory不是None,則不帶參數呼叫它,則為給定的鍵提供預設值,該值被插入到鍵的字典中並傳回。
2)default_factory
DefaultDict对象支持default_factory实例变量。该属性由__missing__()方法使用。如果存在,则从构造函数的第一个参数开始初始化;如果不存在,则初始化为None。
运行程序输出结果为:
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
在上述代码中,我们使用列表类型作为default_factory,更易于将包含键值序列对的列表组成字典。当第一次遇到每个键时,它还不在映射中,因此使用default_factory函数自动创建一个条目,该函数返回一个空列表。然后list.append()操作将值连接到新列表。当再次遇到键时,查找正常进行(返回该键的列表),然后list.append()操作将另一个值添加到列表中。这种技术比使用dict.setdefault()的等效技术要简单得多。
我们再看一个示例:
输出结果如下:
[('a', 2), ('c', 1), ('g', 2), ('h', 1), ('i', 1), ('j', 1), ('n', 2)]
在上面代码中,我们将default_factory设置为int。这使得defaultdict用于计数(就像其他语言中的bag或multiset)。
当第一次遇到某个字母时,它就在映射中是不存在的,因此default_factory函数调用int()来提供一个默认的0计数。然后递增操作为每个字母建立计数。
提示:这里传递的int()函数默认返回的是整数0。若想返回任意值,可以自定义个一个基于lambda的常量函数。示例代码如下:
一言以蔽之:使用DefaultDict的好处就是可以避免KeyError异常,并进行一些可能的特定处理。
本文小结
本文主要介绍了Python字典(dict)类相关的几个内置子类的应用。这些直接相关的子类分别是OrderedDict、defaultdict、userDict等内置子类。通过示例代码和关联描述,让你更轻松掌握它们的应用和基本规则。
以上是Python程式設計:詳述內建字典(dict)子類別及應用(一網打盡)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。
