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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Addit:一個(gè)寫(xiě)起來(lái)令人極其舒適的字典模塊

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-30 09:56 ? 次閱讀

Addit 是一個(gè)Python模塊,除了提供標(biāo)準(zhǔn)的字典語(yǔ)法外,Addit 生成的字典的值既可以使用屬性來(lái)獲取,也可以使用屬性進(jìn)行設(shè)置。

這意味著你不用再寫(xiě)這樣的字典了:

body = {
    'query': {
        'filtered': {
            'query': {
                'match': {'description': 'addictive'}
            },
            'filter': {
                'term': {'created_by': 'Mats'}
            }
        }
    }
}

相反,你只需編寫(xiě)以下三行代碼就能完成目的:

body = Dict()
body.query.filtered.query.match.description = 'addictive'
body.query.filtered.filter.term.created_by = 'Mats'

1.安裝

你可以通過(guò)** pip **安裝:

pip install addict

或通過(guò)** conda :**

conda install addict -c conda-forge

Addit 在Python2.7+和Python3上都可以運(yùn)行。

2.用法

Addict 繼承自字典,但在訪(fǎng)問(wèn)和設(shè)置其值方面更加靈活。使用 Addict 的字典是一種樂(lè)趣!

設(shè)置嵌套詞典的項(xiàng)是極其舒服的:

>> > from addict import Dict
 >> > mapping = Dict()
 >> > mapping.a.b.c.d.e = 2
 >> > mapping
{'a': {'b': {'c': {'d': {'e': 2}}}}}

如果Dict是用任何可迭代值實(shí)例化的,它將遍歷并克隆這些值,然后寫(xiě)入到對(duì)應(yīng)的屬性及值中,比如:

>> > mapping = {'a': [{'b': 3}, {'b': 3}]}
 >> > dictionary = Dict(mapping)
 >> > dictionary.a[0].b
3

但** mapping['a']不再與dictionary['a'] **相同。

> >> mapping['a'] is dictionary['a']
False

當(dāng)然,此特點(diǎn)僅限于構(gòu)造函數(shù),而不是在使用屬性或設(shè)置值時(shí):

>> > a = Dict()
 >> > b = [1, 2, 3]
 >> > a.b = b
 >> > a.b is b
True

3.要牢記的事情

記住,** int **不是有效的屬性名,因此必須使用 get/setitem 語(yǔ)法 設(shè)置/獲取 非字符串的 dict 鍵:

>> > addicted = Dict()
 >> > addicted.a.b.c.d.e = 2
 >> > addicted[2] = [1, 2, 3]
{2: [1, 2, 3], 'a': {'b': {'c': {'d': {'e': 2}}}}}

不過(guò),你可以隨意混合使用這兩種語(yǔ)法:

>> > addicted.a.b['c'].d.e
2

4.屬性,如鍵、item等

Addit 不會(huì)讓你覆蓋** dict **的屬性,因此以下操作將不起作用:

> >> mapping = Dict()
> >> mapping.keys = 2
Traceback (most recent call last):
File "< stdin >", line 1, in < module >
 File "addict/addict.py", line 53, in __setattr__
 raise AttributeError("'Dict' object attribute '%s' is read-only" % name)
AttributeError: 'Dict' object attribute 'keys' is read-only

不過(guò),使用下面這種方式就可以:

>> > a = Dict()
 >> > a['keys'] = 2
 >> > a
{'keys': 2}
 >> > a['keys']
2

5.默認(rèn)值

對(duì)于不在字典中的鍵,Addit的行為如 ** defaultdict(Dict) ** ,因此丟失的鍵返回一個(gè)空的** Dict而不是拋出KeyError **如果此行為不是所需的,則可以使用以下方式恢復(fù)拋出KeyError:

>> > class DictNoDefault(Dict):
 >> >   def __missing__(self, key):
 >> >     raise KeyError(key)

但請(qǐng)注意,這樣會(huì)失去速記賦值功能( **addicted.a.b.c.d.e = 2 ** )

6.轉(zhuǎn)化為普通字典

如果你覺(jué)得將 Addict 傳遞到其他函數(shù)或模塊并不安全,請(qǐng)使用** to_dict() **方法,它返回會(huì)把 Addict 轉(zhuǎn)化為普通字典。

> >> regular_dict = my_addict.to_dict()
> >> regular_dict.a = 2
Traceback (most recent call last):
File "< stdin >", line 1, in < module >
 AttributeError: 'dict' object has no attribute 'a'

當(dāng)您希望在幾行代碼中創(chuàng)建嵌套的字典,然后將其發(fā)送到不同的函數(shù)或模塊時(shí),這非常適合:

body = Dict()
body.query.filtered.query.match.description = 'addictive'
body.query.filtered.filter.term.created_by = 'Mats'
third_party_module.search(query=body.to_dict())

7.計(jì)數(shù)

**Dict **輕松訪(fǎng)問(wèn)和修改深度嵌套屬性的能力使其成為計(jì)數(shù)的理想選擇。使用Addict,你還可以容易允許按多個(gè)級(jí)別計(jì)數(shù),內(nèi)部使用的原理是 **collections.Counter ** 。

比如以下數(shù)據(jù):

data = [
    {'born': 1980, 'gender': 'M', 'eyes': 'green'},
    {'born': 1980, 'gender': 'F', 'eyes': 'green'},
    {'born': 1980, 'gender': 'M', 'eyes': 'blue'},
    {'born': 1980, 'gender': 'M', 'eyes': 'green'},
    {'born': 1980, 'gender': 'M', 'eyes': 'green'},
    {'born': 1980, 'gender': 'F', 'eyes': 'blue'},
    {'born': 1981, 'gender': 'M', 'eyes': 'blue'},
    {'born': 1981, 'gender': 'F', 'eyes': 'green'},
    {'born': 1981, 'gender': 'M', 'eyes': 'blue'},
    {'born': 1981, 'gender': 'F', 'eyes': 'blue'},
    {'born': 1981, 'gender': 'M', 'eyes': 'green'},
    {'born': 1981, 'gender': 'F', 'eyes': 'blue'}
]

如果你想計(jì)算有多少人出生在born性別的gender使用eyes眼睛,你可以很容易地計(jì)算出這些信息

counter = Dict()

for row in data:
    born = row['born']
    gender = row['gender']
    eyes = row['eyes']

    counter[born][gender][eyes] += 1 print(counter)

# 結(jié)果:{1980: {'M': {'blue': 1, 'green': 3}, 'F': {'blue': 1, 'green': 1}}, 1981: {'M': {'blue': 2, 'green': 1}, 'F': {'blue': 2, 'green': 1}}}

8.更新

普通字典的更新方式如下:

>> > d = {'a': {'b': 3}}
 >> > d.update({'a': {'c': 4}})
 >> > print(d)
{'a': {'c': 4}}

** addict **的更新方式如下,它會(huì)遞歸并實(shí)際更新嵌套的字典:

>> > D = Dict({'a': {'b': 3}})
 >> > D.update({'a': {'c': 4}})
 >> > print(D)
{'a': {'b': 3, 'c': 4}}

9.Addict 是怎么來(lái)的?

這個(gè)模塊完全是從用Python創(chuàng)建Elasticsearch查詢(xún)的繁瑣過(guò)程中發(fā)展而來(lái)的。每當(dāng)你發(fā)現(xiàn)自己在寫(xiě)了很復(fù)雜的字典邏輯時(shí),只要記住你沒(méi)有必要這樣做,使用 Addict 就行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2731

    瀏覽量

    47661
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4823

    瀏覽量

    68894
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4807

    瀏覽量

    84945
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F439單片機(jī)應(yīng)用資料

    最近公司在研發(fā)個(gè)項(xiàng)目,使用的是STM32F439系列單片機(jī),使用過(guò)程中發(fā)現(xiàn)這款芯片功能實(shí)在是太強(qiáng)大,不過(guò)程序編寫(xiě)起來(lái)還是有點(diǎn)費(fèi)勁,尤其是在U/COS11系統(tǒng)基礎(chǔ)上進(jìn)行程序擴(kuò)展時(shí),遇到很多問(wèn)題,希望有志同道合的朋友能共同學(xué)習(xí),共
    發(fā)表于 05-16 13:22

    哪里可以下載到完整項(xiàng)目的程序和pcb,項(xiàng)目可大可小,

    只是想學(xué)習(xí)下如何做一個(gè)完整的項(xiàng)目,完整項(xiàng)目的程序寫(xiě)起來(lái)應(yīng)該不會(huì)和stm32單個(gè)外設(shè)個(gè)的操作吧,
    發(fā)表于 09-06 21:09

    索引數(shù)組

    有沒(méi)有什么方法能讓我索引不這麻煩,占地方,之后可能要要索引0-20個(gè)寫(xiě)起來(lái)太麻煩了,想了下是不是可以用for循環(huán),不過(guò)沒(méi)成功。
    發(fā)表于 12-01 19:43

    請(qǐng)問(wèn)如何用MSP430控制兩個(gè)不同工作頻率的無(wú)線(xiàn)射頻芯片并使其自動(dòng)切換?

    大家好,新人初入論壇,想請(qǐng)教下大家,我的課題需要用單片機(jī)控制兩個(gè)不同的無(wú)線(xiàn)射頻芯片并使其根據(jù)環(huán)境自動(dòng)切換,請(qǐng)問(wèn)大神們能否為我提供下思路?用MSP430F149控制完成是否可行?程序寫(xiě)起來(lái)難度如何?真的謝謝大家了!!
    發(fā)表于 08-07 20:48

    PIC32上的Python?

    Python是否已經(jīng)移植到PIC32。我不確定這是不是個(gè)好主意,但是Python寫(xiě)起來(lái)很快。 以上來(lái)自于百度翻譯 以下為原文 Has python ever been ported
    發(fā)表于 11-19 10:51

    請(qǐng)問(wèn)在標(biāo)準(zhǔn)的C語(yǔ)言庫(kù)中有沒(méi)有能將一個(gè)字節(jié)轉(zhuǎn)換成兩個(gè)字符串的函數(shù)?

    一個(gè)字節(jié)轉(zhuǎn)換成兩個(gè)字符串,比如:0x4d。轉(zhuǎn)換成:‘4’,‘D’。之前都是自己寫(xiě)的函數(shù)感覺(jué)每次寫(xiě)起來(lái)太麻煩了想找個(gè)捷徑。
    發(fā)表于 04-04 06:35

    怎樣去設(shè)計(jì)個(gè)基于溫濕度和煙霧傳感器的火災(zāi)檢測(cè)系統(tǒng)

    、MB-102電源模塊本來(lái)想把軟硬件寫(xiě)在起,但后來(lái)發(fā)現(xiàn)內(nèi)容比較多,我寫(xiě)起來(lái)比較花時(shí)間,讀者看起來(lái)應(yīng)該也挺累,索性拆開(kāi)來(lái),軟件部分后續(xù)補(bǔ)充。
    發(fā)表于 01-07 06:42

    Addict 個(gè)寫(xiě)起來(lái)令人極其舒適字典模塊

    Addit個(gè)Python模塊,除了提供標(biāo)準(zhǔn)的字典語(yǔ)法外,Addit 生成的
    發(fā)表于 06-21 16:13

    設(shè)計(jì)獨(dú)樹(shù)幟的新物件:JVC EXOFIELD XP-EXT1系統(tǒng)

    的特色和不同,寫(xiě)起來(lái)簡(jiǎn)單,看起來(lái)也并不麻煩。 但總有極少數(shù)的物件,它真的不屬于我們已知的任何類(lèi)型,它是全新的,從形式到效果都是全新的。得承認(rèn)這種東西并不大好寫(xiě),我甚至不大敢急著給它下定義,可是寫(xiě)起來(lái)的時(shí)候心情又
    的頭像 發(fā)表于 11-01 11:44 ?2508次閱讀
    設(shè)計(jì)獨(dú)樹(shù)<b class='flag-5'>一</b>幟的新物件:JVC EXOFIELD XP-EXT1系統(tǒng)

    個(gè)Python模塊Addit屬性設(shè)置

    Addit個(gè)Python模塊,除了提供標(biāo)準(zhǔn)的字典語(yǔ)法外,Addit 生成的
    的頭像 發(fā)表于 11-17 10:15 ?1416次閱讀

    python字典是什么

    python字典 字典(英文名 dict),它是由系列的鍵值(key-value)對(duì)組合而成的數(shù)據(jù)結(jié)構(gòu)。 字典中的每個(gè)鍵都與
    的頭像 發(fā)表于 02-23 16:54 ?3516次閱讀

    Python模塊Addict的安裝與使用

    Addit個(gè)Python模塊,除了提供標(biāo)準(zhǔn)的字典語(yǔ)法外,Addit 生成的
    的頭像 發(fā)表于 06-21 16:14 ?2352次閱讀

    常見(jiàn)的幾種單片機(jī)編程框架

    程序框架其實(shí)就類(lèi)似個(gè)文件大綱或者模板。因?yàn)閷?xiě)程序就和類(lèi)似于寫(xiě)文章,如果沒(méi)有大綱或者模板那么你寫(xiě)起來(lái)就會(huì)比較費(fèi)勁。
    的頭像 發(fā)表于 04-12 14:11 ?1651次閱讀

    盤(pán)點(diǎn)那些常見(jiàn)的單片機(jī)編程框架

    程序框架其實(shí)就類(lèi)似個(gè)文件大綱或者模板。因?yàn)閷?xiě)程序就和類(lèi)似于寫(xiě)文章,如果沒(méi)有大綱或者模板那么你寫(xiě)起來(lái)就會(huì)比較費(fèi)勁。
    的頭像 發(fā)表于 04-23 15:57 ?690次閱讀
    盤(pán)點(diǎn)那些常見(jiàn)的單片機(jī)編程框架

    Addict:個(gè)寫(xiě)起來(lái)令人極其舒適字典模塊

    Addit個(gè)Python模塊,除了提供標(biāo)準(zhǔn)的字典語(yǔ)法外,Addit 生成的
    的頭像 發(fā)表于 10-21 14:24 ?497次閱讀
    主站蜘蛛池模板: 99国产精品欲AV蜜桃臀麻豆 | 久久久综合中文字幕久久 | 国产偷国产偷亚州清高 | 国产AV天堂亚洲AV麻豆 | 久久9精品区-无套内射无码 | 麻豆免费观看高清完整视频 | 日本综艺大尺度无删减版在线 | 国产人妻精品久久久久久很牛 | 中文字幕无码他人妻味 | 影音先锋av色咪影院 | 国产精亚洲视频综合区 | 久见久热 这里只有精品 | 日韩精品亚洲专区在线影院 | 国产亚洲视频中文字幕 | 日本工口生肉全彩大全 | 久久看片网 | 青青草偷拍国产亚洲欧洲 | 伊人久久精品99热超碰 | 欧美亚洲另类丝袜自拍动漫 | 亚洲AV无码专区国产精品麻豆 | 俺也去最新地址 | 日韩AV爽爽爽久久久久久 | 精品熟女少妇AV久久免费A片 | 色狠狠色狠狠综合天天 | 黑色丝袜在线观看 | 特黄特色大片免费播放器试看 | 东京热无码中文字幕av专区 | 亚洲精品成人AV在线观看爽翻 | 高h浪荡文辣文神奇宝贝 | 91亚洲精品福利在线播放 | 免费无码国产欧美久久18 | 国产午夜亚洲精品理论片八戒 | 伊人影院蕉久 | 少妇精油按摩 | 波多久久亚洲精品AV无码 | 健身房被教练啪到腿软H | 小向美奈子厨房magnet | 性色AV一区二区三区V视界影院 | 黄色a级免费网站 | 加勒比一本之道高清视频在线观看 | 国产精品一区二区人妻无码 |