第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

python怎么生成一個(gè)嵌套字典,不想使用defaultdict實(shí)現(xiàn)

python怎么生成一個(gè)嵌套字典,不想使用defaultdict實(shí)現(xiàn)

侃侃爾雅 2018-11-16 20:27:49
比如原生的dict屬性test=dict() test['a']=1         # 這個(gè)可以實(shí)現(xiàn) test['x']['y']=2    # 這個(gè)就會(huì)報(bào)錯(cuò)我想生成一個(gè)遞歸字典,如果沒有這個(gè)鍵則創(chuàng)建,哪種方法能簡(jiǎn)潔點(diǎn),優(yōu)雅點(diǎn)~~多謝了
查看完整描述

1 回答

?
翻翻過去那場(chǎng)雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

這樣會(huì)有一些問題.
test["x"]["y"]相當(dāng)于一個(gè)鏈?zhǔn)秸{(diào)用,先獲取test["x"],再對(duì)["y"]這個(gè)key進(jìn)行賦值,進(jìn)行第一步的時(shí)候你無法獲取后邊是不是要進(jìn)行賦值,你只能在每次getitem的時(shí)候都創(chuàng)建不存在的鍵.
創(chuàng)建這個(gè)鍵究竟是什么類型的呢?默認(rèn)是dict當(dāng)然很好理解,但是如果他y的位置是一個(gè)整數(shù),那要不要?jiǎng)?chuàng)建一個(gè)列表呢?
這些你都要考慮清楚.
最后是一個(gè)簡(jiǎn)單的實(shí)現(xiàn).完全不考慮list的情況.

# coding:utf-8class MyDict(dict):
    # mydict 可還行

    def __getitem__(self, a):
        if not hasattr(self, a):
            self[a] = MyDict() # 注意這個(gè)位置也要生成同樣的類型
        return super(MyDict, self).__getitem__(a)


test = MyDict()

test["a"]["b"]["c"] = 1print test# {'a': {'b': {'c': 1}}}

我覺得這種簡(jiǎn)單的設(shè)計(jì)雖然用起來看似簡(jiǎn)單,但是局限性也是存在的,一定要小心使用這種trick.


查看完整回答
反對(duì) 回復(fù) 2018-11-16
  • 1 回答
  • 0 關(guān)注
  • 1260 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)