विचार करें कि आपके पास निम्न के रूप में एक नेस्टेड शब्दकोश है:

{
    "text": "hi",
    "next": {
        "text": "hi",
        "next": {
            "text": "hi",
        }
    }
}

अब मैं अंतिम नोड को {"text": "bye"} में बदलना चाहता हूं, ताकि मेरा अंतिम परिणाम इस प्रकार हो:

{
    "text": "hi",
    "next": {
        "text": "hi",
        "next": {
            "text": "bye",
        }
    }
}

याद रखें कि हजारों नोड हो सकते हैं लेकिन मैं केवल अंतिम नोड को संशोधित करना चाहता हूं। मैं यह कैसे कर सकता हूं?

-2
Saptak Bhoumik 22 अगस्त 2021, 17:58

3 जवाब

सबसे बढ़िया उत्तर

शब्दकोश के माध्यम से लूपिंग, अंतिम वस्तु प्राप्त करना और इसे बदलना

d = {
"text":"hi",
"next":{
        "text":"hi",
        "next":{
                "text":"bye"
                  }
}
}

pre = d
while True:
    next_ = pre.get('next')
    if not next_:
        pre['text'] = 'bye'
        break
    pre = next_
print(d)
1
eroot163pi 22 अगस्त 2021, 18:16

यदि आप शब्दकोश की गहराई जानते हैं, तो आप यहां बताए अनुसार reduce का उपयोग कर सकते हैं:

from functools import reduce
def reduce_dict(data, items):
    return reduce(dict.get, items, data)
depth = 1000
reduce_dict(my_dict, ['next']* depth)['text'] = 'bye'
1
Mohammad 22 अगस्त 2021, 18:11
root = {'text': 'hi', 'next': {'text': 'hi', 'next': {'text': 'hi'}}}

node = root
while 'next' in node:
    node = node['next']
node['text'] = 'bye'

print(root)

आउटपुट:

{'text': 'hi', 'next': {'text': 'hi', 'next': {'text': 'bye'}}}
1
Kelly Bundy 22 अगस्त 2021, 18:14