Python小酷庫系列:5個常用的dict屬性化訪問擴展庫

5個常用的dict屬性化訪問擴展庫

    • 嵌套結構
    • 高級功能
    • 性能
    • 綜合建議

在前面我們詳細講解了 Box和 Munch這兩個dict屬性化訪問的擴展庫,總體而言它們主要用于提升配置文件數據、JSON對象數據的可讀性,減少了代碼中雙引號。在這一領域中還有dotmap、addict 和 easydict等,本節我們就來對比一下這五個dict屬性化訪問擴展庫。

鑒于 box、munch、dotmap、addict 和 easydict在基本使用上都比較接近,在此不再贅述,本節主要考察它們在嵌套結構高級功能性能上的差異,以幫助我們在實際使用中做出合適的選擇。

嵌套結構

功能addictmunchboxdotmapeasydict
自動解析嵌套?????
自動創建嵌套? d.user.name = “Alice”? d[‘user’] = Munch(); d.user.name = “Alice”? Box(default_box=True)? d.user.name = “Alice”? 需手動設置子項為 EasyDict
淺拷貝?????
深拷貝??? merge_update??

高級功能

功能addictmunchboxdotmapeasydict
默認值(auto create)??? default_box??
深度合并??? 有限支持? merge_update??
屬性與鍵沖突保護?????
JSON / YAML 友好?????
凍結/只讀模式???(可配置)??

性能

使用 timeit 進行 .user.name 和[‘user’][‘name’] 的性能測試(百萬次訪問)(單位:秒)

原生 dictaddictmunchboxdotmapeasydict
訪問時間0.07s~0.40s~0.30s~0.60s~0.35s~0.25s
賦值時間0.08s~0.45s~0.35s~0.65s~0.38s~0.28s
嵌套創建?? 快?? 中? 中?

綜合建議

在進行本次對比時,以上五個擴展庫在pypi上的最后release時間分別為:

  • box 2025
  • easydict 2024
  • munch 2023
  • dotmap 2022
  • addict 2020
    考慮到用新不用舊的原則以及上述綜合因素,建議一般情況下可以使用 box,對性能有一定要求時,可以選用easydict

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78833.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78833.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78833.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OC語言學習——面向對象(下)

一、OC的包裝類 OC提供了NSValue、NSNumber來封裝C語言基本類型(short、int、float等)。 在 Objective-C 中,**包裝類(Wrapper Classes)**是用來把基本數據類型(如 int、float、char 等)“包裝…

密碼學系列 - SR25519與ED25519

SR25519 SR25519 是一種高級的數字簽名算法,它基于 Schnorr 簽名方案,使用的是 Curve25519 橢圓曲線。這種簽名算法在密碼學社區中廣受歡迎,特別是在區塊鏈和加密貨幣領域。以下是關于 SR25519 的詳細介紹。 SR25519 簡介 SR25519 是一種 …

Vue3源碼學習7-PatchFlags使用位算符

文章目錄 前言? 一、基礎知識&#xff1a;什么是二進制&#xff1f;? 二、位運算的基本操作? 三、左移運算 <<? 四、實際用途&#xff1a;如何用于狀態標記&#xff08;PatchFlags&#xff09;? 五、組合多個狀態標記? 六、小結口訣&#xff08;記憶&#xff09;?…

在 Vue 2 中使用 qrcode 庫生成二維碼

&#x1f31f; 前言 歡迎來到我的技術小宇宙&#xff01;&#x1f30c; 這里不僅是我記錄技術點滴的后花園&#xff0c;也是我分享學習心得和項目經驗的樂園。&#x1f4da; 無論你是技術小白還是資深大牛&#xff0c;這里總有一些內容能觸動你的好奇心。&#x1f50d; &#x…

電子電器架構 --- 網關釋放buffer的必要性

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 鈍感力的“鈍”,不是木訥、遲鈍,而是直面困境的韌勁和耐力,是面對外界噪音的通透淡然。 生活中有兩種人,一種人格外在意別人的眼光;另一種人無論…

Java中Stream、File、方法遞歸

文章目錄 十五、Stream流、File、方法遞歸1、Stream1.1 什么是Stream1.2 獲取Stream流1.3 Stream流常見的中間方法1.3 Stream流常見的終結方法1.4 收集Stream流 2、File、IO流&#xff08;一&#xff09;2.1 存儲數據的方案2.2 File&#xff1a;代表文本2.3 常用方法一&#xf…

挑戰用豆包教我學Java01天

今天是豆包教我學Java的第一天&#xff0c;廢話不多說直接開始。 1.每日題目&#xff1a; 基礎語法與數據類型 題目&#xff1a;編寫一個 Java 程序&#xff0c;從控制臺讀取兩個整數&#xff0c;然后計算它們的和、差、積、商&#xff0c;并輸出結果。題目&#xff1a;編寫…

文章記單詞 | 第67篇(六級)

一&#xff0c;單詞釋義 cylinder&#xff1a;英 [?s?l?nd?(r)] 美 [?s?l?nd?r] &#xff0c;名詞&#xff0c;意為 “圓筒&#xff1b;圓柱體&#xff1b;汽缸&#xff1b;&#xff08;有特定用途的&#xff09;圓筒形物品”。fool&#xff1a;英 [fu?l] 美 [fu?l]…

Make:獨立創造者手冊——從0到1的商業自由之路

目錄 如何獲得創業想法 ? 解決你自己的問題 ? 從微觀細分市場起步 ? 從問題出發&#xff0c;而非解決方案 ? 記錄與驗證想法 如何構建產品 ? 快速構建最小化產品 ? 對抗完美主義 ? 自行開發 vs. 外包 ? 學習基礎編程的必要性 案例與洞見 ? Levelsio的70個項目與5%成…

spark基本介紹

一、Spark概述 Spark是一種基于內存的快速、通用、可拓展的大數據分析計算引擎。 Hadoop是一個分布式系統結構的基礎架構。 二、Spark與Hadoop相比較的優勢&#xff1a; 1. 處理速度&#xff1a;Hadoop&#xff1a;數據處理速度相對較慢 Spark&#xff1a;速度比Hadoop快很…

Pdf轉Word案例(java)

Pdf轉Word案例&#xff08;java&#xff09; 需要導入aspose-pdf.jar 需要先手動下載jar包到本地&#xff0c;然后通過systemPath在pom文件中引入。 下載地址&#xff1a;https://releases.aspose.com/java/repo/com/aspose/aspose-pdf/25.4/ <dependency><groupId&…

探索 C++ 語言標準演進:從 C++23 到 C++26 的飛躍

引言 C 作為一門歷史悠久且廣泛應用的編程語言&#xff0c;其每一次標準的演進都備受開發者關注。從早期的 C98 到如今的 C23&#xff0c;再到令人期待的 C26&#xff0c;每一個版本都為開發者帶來了新的特性和改進&#xff0c;推動著軟件開發的不斷進步。本文將深入探討 C23 …

如何有效防御服務器DDoS攻擊

分布式拒絕服務&#xff08;DDoS&#xff09;攻擊通過大量惡意流量淹沒服務器資源&#xff0c;導致服務癱瘓。本文將提供一套結合代碼實現的主動防御方案&#xff0c;涵蓋流量監控、自動化攔截和基礎設施優化。 1. 實時流量監控與告警 目標&#xff1a;檢測異常流量并觸發告警…

【Bootstrap V4系列】學習入門教程之 組件-折疊(Collapse)

Bootstrap V4系列 學習入門教程之 組件-折疊&#xff08;Collapse&#xff09; 折疊&#xff08;Collapse&#xff09;How it works一、Example二、Horizontal 水平的三、Multiple targets 多個目標四、Accordion example 手風琴示例 折疊&#xff08;Collapse&#xff09; 通…

C24-數組

數組的引入:方便對同一類型的數據進行管理(一個班級里的45個同學、一個籃子里的12個蘋果)數組的定義: 數據類型 數組名[常量表達式(也就是元素的個數)];int a[10]; //這里定義了一個能存放10個元素的整形數組數組初始化 完全初始化 int arr[3]{5,6,8};部分初始化 int arr[10]{…

手持小風扇方案解說---【其利天下技術】

春去夏來&#xff0c;酷暑時節&#xff0c;小風扇成為外出必備的解暑工具&#xff0c;近年來&#xff0c;隨著無刷電機的成本急劇下降&#xff0c;小風扇也逐步從有刷變無刷化了。 數量最大的如一箱無刷馬達&#xff0c;其次三相低壓無刷電機也大量被一些中高端風扇大量采用。…

C++函數棧幀詳解

函數棧幀的創建和銷毀 在不同的編譯器下&#xff0c;函數調用過程中棧幀的創建是略有差異的&#xff0c;具體取決于編譯器的實現&#xff01; 且需要注意的是&#xff0c;越高級的編譯器越不容易觀察到函數棧幀的內部的實現&#xff1b; 關于函數棧幀的維護這里我們要重點介…

CPU-GPU-NPU-TPU 概念

1.CPU 中央處理器&#xff08;Central Processing Unit&#xff0c;簡稱CPU&#xff09;作為計算機系統的運算和控制核心&#xff0c;是信息處理、程序運行的最終執行單元。CPU自產生以來&#xff0c;在邏輯結構、運行效率以及功能外延上取得了巨大發展。 2.GPU GPU&#xff0…

Java學習手冊:ORM 框架性能優化

一、優化實體類設計 減少實體類屬性 &#xff1a;僅保留必要的字段&#xff0c;避免持久化過多數據。例如&#xff0c;對于一個用戶實體類&#xff0c;如果某些信息&#xff08;如詳細地址&#xff09;不是經常使用&#xff0c;可以將其拆分到單獨的實體類中。使用合適的數據類…

XMP-Toolkit-SDK 編譯與示例程序

一、前言 最近在調研圖片的元數據讀寫方案&#xff0c;需要了解 XMP 空間以及如何在 XMP 空間中讀寫元數據&#xff0c;本文做一個相關內容的記錄。 XMP-Toolkit-SDK 以及 XMP標準簡介 XMP-Toolkit-SDK 是 Adobe 提供的一套開源軟件開發工具包&#xff08;SDK&#xff09;&a…