梦幻诛仙苍羽阁加点: python怎么生成一個嵌套字典,不想使用defaultdict實現

0
Python C/C++ 嵌套字典 10396 次瀏覽

梦幻诛仙手游丹青阁天书 www.rasug.icu 比如原生的dict屬性

test=dict()
test['a']=1         # 這個可以實現
test['x']['y']=2    # 這個就會報錯

我想生成一個遞歸字典,如果沒有這個鍵則創建,哪種方法能簡潔點,優雅點~~多謝了

請盡量讓自己的答案能夠對別人有幫助

4個答案

默認排序按投票排序
0

Is your problem was already done in python dictionary? Could I exploit this info for a reference? I might truly appreciate that. many thanks. tres card game

0

Thanks for sharing this wonderful thing. Keep sharing useful and more visible things like this. Thank you very much.

 vex

 

0

Nice article thank you for sharing Also check! lucky patcher 2019 apk download AND download tutuapp for free AND 8 Ball Pool Hack

1

這樣會有一些問題.
test["x"]["y"]相當于一個鏈式調用,先獲取test["x"],再對["y"]這個key進行賦值,進行第一步的時候你無法獲取后邊是不是要進行賦值,你只能在每次getitem的時候都創建不存在的鍵.
創建這個鍵究竟是什么類型的呢?默認是dict當然很好理解,但是如果他y的位置是一個整數,那要不要創建一個列表呢?
這些你都要考慮清楚.
最后是一個簡單的實現.完全不考慮list的情況.

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

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


test = MyDict()

test["a"]["b"]["c"] = 1

print test
# {'a': {'b': {'c': 1}}}

我覺得這種簡單的設計雖然用起來看似簡單,但是局限性也是存在的,一定要小心使用這種trick.

相似問題

相關經驗

相關資訊

相關文檔