কম্পিউটার টিউটোরিয়াল

পাইথনে নেস্টেড লিস্টকে ট্রি-লাইক ডিকশনারিতে কনভার্ট করা

একটি নেস্টেড লিস্ট দেওয়া আছে। আমরা এটি একটি ডিকশনারিতে কনভার্ট করতে চাই যাতে এর এলিমেন্টগুলো ট্রি ডেটা স্ট্রাকচারের মতো কাঙ্ক্ষিত হয়। এই আর্টিকেলে আমরা দুটি পদ্ধতি দেখব নেস্টেড লিস্টকে ট্রি-লাইক ডিকশনারিতে কনভার্ট করার।

স্লাইসিং (Slicing) ব্যবহার করে

লিস্টের আইটেমগুলো রিভার্স স্লাইসিং ([::-1]) দিয়ে উল্টো করা হয়। তারপর চেক করা হয় আইটেমটি ট্রিতে আছে কিনা। যদি না থাকে, তবে অ্যাড করা হয়।

উদাহরণ

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': {}}}}

reduce এবং getitem ব্যবহার করে

functools এবং operator মডিউল থেকে reduce এবং getitem ফাংশন ইম্পোর্ট করা হয়। এই ফাংশনগুলো ব্যবহার করে দুটি হেল্পার ফাংশন বানানো হয় ট্রি স্ট্রাকচার তৈরি করার জন্য। এখানেও স্লাইসিং দিয়ে লিস্ট রিভার্স করা হয়।

উদাহরণ

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': {}}}}
  1. পাইথনে কলামকে তালিকার তালিকায় পৃথক উপাদানে রূপান্তর করা

  2. পাইথনে সেটকে ডিকশনারিতে রূপান্তর করা

  3. পাইথনে ক্যারেক্টারের লিস্টকে স্ট্রিংয়ে রূপান্তর করার প্রোগ্রাম

  4. পাইথনে লিস্টকে টাপলে কনভার্ট করবেন?