>> profile = dict(name= "iswbm" ) >>> profile { 'name' : 'iswbm' } >>> profile[ "name" ] 'is" />

色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于替換原生字典munch的使用全解

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-31 14:12 ? 次閱讀

字典是 Python 中基礎的數據結構之一,字典的使用,可以說是非常的簡單粗暴,但即便是這樣一個與世無爭的數據結構,仍然有很多人 "看不慣它" 。

也許你并不覺得,但我相信,你看了這篇文章后,一定會和我一樣,對原生字典開始有了偏見。

我舉個簡單的例子吧

當你想訪問字典中的某個 key 時,你需要使用字典特定的訪問方式,而這種方式需要你鍵入 一對中括號 還有 一對引號

>>> profile = dict(name="iswbm")
>>> profile
{'name': 'iswbm'}
>>> profile["name"]
'iswbm'

是不是開始覺得忍無可忍了?

如果可以像調用對象屬性一樣使用 . 去訪問 key 就好了,可以省去很多多余的鍵盤擊入,就像這樣子

>>> profile.name
'iswbm'

是的,今天這篇文章就是跟大家分享一種可以直接使用 . 訪問和操作字典的一個黑魔法庫 -- munch

1. 安裝方法

使用如下命令進行安裝

$ python -m pip install munch

2. 簡單示例

munch 有一個 Munch 類,它繼承自原生字典,使用 isinstance 可以驗證

>>> from munch import Munch
>>> profile = Munch()
>>> isinstance(profile, dict)
True
>>>

并實現了點式賦值與訪問,profile.nameprofile['name'] 是等價的

>>> profile.name = "iswbm"
>>> profile.age = 18
>>> profile
Munch({'name': 'iswbm', 'age': 18})
>>>
>>> profile.name
'iswbm'
>>> profile["name"]
'iswbm'

3. 兼容字典的所有操作

本身 Munch 繼承自 dict,dict 的操作也同樣適用于 Munch 對象,不妨再來驗證下

首先是:增刪改查

# 新增元素
>>> profile["gender"] = "male"
>>> profile
Munch({'name': 'iswbm', 'age': 18, 'gender': 'male'})

# 修改元素
>>> profile["gender"] = "female"
>>> profile
Munch({'name': 'iswbm', 'age': 18, 'gender': 'female'})

# 刪除元素
>>> profile.pop("gender")
'female'
>>> profile
Munch({'name': 'iswbm', 'age': 18})
>>>
>>> del profile["age"]
>>> profile
Munch({'name': 'iswbm'})

再者是:一些常用方法

>>> profile.keys()
dict_keys(['name'])
>>>
>>> profile.values()
dict_values(['iswbm'])
>>>
>>> profile.get('name')
'iswbm'
>>> profile.setdefault('gender', 'male')
'male'
>>> profile
Munch({'name': 'iswbm', 'gender': 'male'})

4. 設置返回默認值

當訪問一個字典中不存在的 key 時,會報 KeyError 的錯誤

>>> profile = {}
>>> profile["name"]
Traceback (most recent call last):
File "", line 1, in
KeyError: 'name'

對于這種情況,通常我們會使用 get 來規避

>>> profile = {}
>>> profile.get("name", "undefined")
'undefined'

當然你在 munch 中仍然可以這么用,不過還有一種更好的方法:使用 DefaultMunch,它會在你訪問不存在的 key 時,給你返回一個設定好的默認值

>>> from munch import DefaultMunch
>>> profile = DefaultMunch("undefined", {"name": "iswbm"})
>>> profile
DefaultMunch('undefined', {'name': 'iswbm'})
>>> profile.age
'undefined'
>>> profile
DefaultMunch('undefined', {'name': 'iswbm'})

5. 工廠函數自動創建key

上面使用 DefaultMunch 僅當你訪問不存在的 key 是返回一個默認值,但這個行為并不會修改原 munch 對象的任何內容。

若你想訪問不存在的 key 時,自動觸發給原 munch 中新增你想要訪問的 key ,并為其設置一個默認值,可以試一下 DefaultFactoryMunch 傳入一個工廠函數。

>>> from munch import DefaultFactoryMunch
>>> profile = DefaultFactoryMunch(list, name='iswbm')
>>> profile
DefaultFactoryMunch(list, {'name': 'iswbm'})
>>>
>>> profile.brothers
[]
>>> profile
DefaultFactoryMunch(list, {'name': 'iswbm', 'brothers': []})

6. 序列化的支持

Munch 支持序列化為 JSON 或者 YAML 格式的字符串對象

轉換成 JSON

>>> from munch import Munch
>>> munch_obj = Munch(foo=Munch(lol=True), bar=100, msg='hello')
>>>
>>> import json
>>> json.dumps(munch_obj)
'{"foo": {"lol": true}, "bar": 100, "msg": "hello"}'

轉換成 YAML

>>> from munch import Munch
>>> munch_obj = Munch(foo=Munch(lol=True), bar=100, msg='hello')
>>> import yaml
>>> yaml.dump(munch_obj)
'!munch.Munchnbar: 100nfoo: !munch.Munchn lol: truenmsg: hellon'
>>>
>>> print(yaml.dump(munch_obj))
!munch.Munch
bar: 100
foo: !munch.Munch
lol: true
msg: hello

>>>

建議使用 safe_dump 去掉 !munch.Munch

>>> print(yaml.safe_dump(munch_obj))
bar: 100
foo:
lol: true
msg: hello

以上就是關于 munch 的使用全解,替換原生字典絕無問題,munch 的進一步封裝使得數據的訪問及操作更得更加 Pythonic 了,希望有一天這個特性能夠體現在原生的字典上。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    40146
  • 字典
    +關注

    關注

    0

    文章

    13

    瀏覽量

    7718
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84751
收藏 人收藏

    評論

    相關推薦

    雙面FPC制造工藝手冊

    雙面FPC制造工藝手冊 FPC開料-雙面FPC制造工藝     除部分材料以外,柔性印制板所用的
    發表于 03-17 10:50 ?1818次閱讀

    新版中九字典算法替換工具,支持9月22號第六套算法

    有四個主要的功能:第一種:都不勾選時,能查看備份BIN有幾套算法或字典的功能,并能具體查出是哪幾套。第二種:只勾選“APP”時,能解壓備份BIN中的APP。第三種,只勾選“替換”時,能進行算法或字典
    發表于 09-23 00:04

    瀾啟第6套字典算法替換工具

    中九瀾啟方案第6套字典算法替換工具(2011-9-22更新)請在替換前面打鉤,然后將瀾起文件拖入就OK了,文件保存在同一文件夾中
    發表于 09-23 13:24

    LabVIEW很全面很強大

    LabVIEW很全面很強大
    發表于 10-17 15:02

    單片機資料,詳細

    單片機資料,希望大家有用
    發表于 07-20 08:48

    報文解析工具中的XML數據字典

    針對報文解析過程中存在的數據存儲無序、查詢和調用不便等問題,提出應用XML 數據字典進行數據存儲的方案。根據給定的數據表,設計XML 形式的數據字典。實現XML 字典數據的
    發表于 03-28 09:38 ?36次下載

    電子白板術語

    電子白板術語 有效讀取尺寸 是指電子白板可以書寫使用的有效尺寸,在這個區域內可以任意書寫
    發表于 02-08 13:43 ?412次閱讀

    GPRS無線參數

    GPRS無線參數 作為移動通信系統,GSM網絡中與無線設備和接口有關的參數的設置對于網絡的服務性能如小區的覆蓋、信令流量的分布、網絡的業
    發表于 03-13 10:41 ?565次閱讀

    TCP-IP協議學習教程

    TCP-IP協議學習教程,壓縮包內一共30章
    發表于 08-24 18:31 ?0次下載

    一種多字典遙感圖像超分辨算法

    ;然后,利用全局限制求取高分辨率圖像的初始;最后,利用正交匹配追蹤算法(OMP)對初始在小波域進行多字典稀疏求解。實驗結果表明,相比基于單字典的超分辨重建算法,結果圖像的主觀視覺效
    發表于 12-03 10:55 ?2次下載

    解決不重復序列的排列問題的兩個方法:遞歸和字典序法

    這篇文章主要介紹了解決不重復序列的排列問題的兩個方法:遞歸和字典序法。
    的頭像 發表于 03-29 11:19 ?6503次閱讀
    解決不重復序列的<b class='flag-5'>全</b>排列問題的兩個方法:遞歸和<b class='flag-5'>字典</b>序法

    CANOpen系列教程10_ 關于Canfestival及對象字典生成工具環境搭建

    CANOpen系列教程10_關于Canfestival及對象字典生成工具環境搭建
    的頭像 發表于 03-06 15:52 ?1.1w次閱讀

    計算機算術運算實現原理

    計算機算術運算實現原理
    發表于 03-26 14:04 ?5次下載

    python字典是什么

    python字典 字典(英文名 dict),它是由一系列的鍵值(key-value)對組合而成的數據結構。 字典中的每個鍵都與一個值相關聯,其中 鍵,必須是可 hash 的值,如字符串,數值等 值
    的頭像 發表于 02-23 16:54 ?3487次閱讀

    Python序列的字典類型介紹

    字典 介紹 字典是“鍵值對”的無序可變序列,字典中的每個元素都是一個“鍵值對”,包含:“鍵對象”和“值對象”。 可以通過“鍵對象”實現快速獲取、刪除、更新對應的“值對象” 字典特點:
    的頭像 發表于 03-08 17:35 ?1327次閱讀
    Python序列的<b class='flag-5'>字典</b>類型介紹
    主站蜘蛛池模板: 欧洲亚洲精品A片久久99果冻| 亚洲无人区码二码三码区别图| 中国少妇内射XXXHD免费| 九九黄色大片| 最新亚洲一区二区三区四区| 免费无码国产欧美久久18| 成人免费精品视频| 小向美奈子厨房magnet| 久久re亚洲在线视频| av在线色| 午夜理论在线观看不卡大地影院| 精品久久综合1区2区3区激情| 97成人免费视频| 偷柏自拍亚洲综合在线| 久久99国产精品蜜臀AV| 啊好深啊别拔就射在里面| 亚洲AV无码专区国产乱码网站| 快播最新电影网站| 国产不卡无码高清视频| 最近免费视频中文2019完整版| 肉肉的各种姿势高H细文| 久久99r66热这里有精品| 草民电影网午夜伦理电影网| 亚洲精品欧美精品中文字幕| 欧美18videosex性欧美老师| 国产亚洲精品AAAAAAA片| 99久视频只有精品2019| 小p孩玩成年女性啪啪资源| 免费的av不用播放器的| 国产精品一区二区20P| 99久久99久久久精品久久| 亚洲91av| 欧洲精品一区二区不卡观看| 精品国产品国语在线不卡丶| 俄罗斯mm| 91久久综合精品国产丝袜长腿| 翁公咬着小娇乳H边走边欢A| 暖暖的视频完整视频免费韩国| 黄得让人湿的片段| 国产成人精品精品欧美| 91免费精品国自产拍在线可以看|