एक नेस्टेड सूची को देखते हुए हम इसे एक ऐसे शब्दकोश में बदलना चाहते हैं जिसके तत्वों को ट्री डेटा संरचना के हिस्से के रूप में माना जा सकता है। इस लेख में हम एक नेस्टेड सूची को डिक्शनरी जोड़ने के लिए दो तरीकों को देखेंगे जिनके तत्व डेटा संरचना जैसे पेड़ का प्रतिनिधित्व करते हैं।
स्लाइसिंग का उपयोग करना
हम सूची में आइटम को स्लाइस करके उलट देते हैं और फिर जांचते हैं कि आइटम सूची में मौजूद है या नहीं। यदि यह मौजूद नहीं है तो हम इसे अनदेखा कर देते हैं अन्यथा हम इसे पेड़ में जोड़ देते हैं।
उदाहरण
def CreateTree(lst):
new_tree = {}
for list_item in lst:
currTree = new_tree
for key in list_item[::-1]:
if key not in currTree:
currTree[key] = {}
currTree = currTree[key]
return new_tree
# Given list
listA = [['X'], ['Y', 'X'], ['Z', 'X'], ['P', 'Z', 'X']]
print(CreateTree(listA)) उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
आउटपुट
{'X': {'Y': {}, 'Z': {'P': {}}}} कम करें और getitem का उपयोग करें
फ़ंक्शन को कम करने और getitem प्राप्त करने के लिए हम functools और ऑपरेटर मॉड्यूल का उपयोग करते हैं। इन फ़ंक्शंस का उपयोग करके हम सूची से आइटम प्राप्त करने के लिए दो फ़ंक्शन परिभाषित करते हैं और आइटम को ट्री स्ट्रक्चर में सेट करते हैं। यहां भी हम सूची के तत्वों को उलटने के लिए स्लाइसिंग दृष्टिकोण का उपयोग करते हैं और फिर दो बनाए गए कार्यों को उन शब्दकोशों को बनाने के लिए लागू करते हैं जिनके तत्व वृक्ष संरचना में हैं।
उदाहरण
from functools import reduce
from operator import getitem
def getTree(tree, mappings):
return reduce(getitem, mappings, tree)
def setTree(tree, mappings):
getTree(tree, mappings[:-1])[mappings[-1]] = dict()
# Given list
lst = [['X'], ['Y', 'X'], ['Z', 'X'], ['P', 'Z', 'X']]
tree = {}
for i in lst:
setTree(tree, i[::-1])
print(tree) उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
आउटपुट
{'X': {'Y': {}, 'Z': {'P': {}}}}