একটি নেস্টেড তালিকা দেওয়া হলে আমরা এটিকে একটি অভিধানে রূপান্তর করতে চাই যার উপাদানগুলি একটি ট্রি ডেটা কাঠামোর অংশ হিসাবে বিবেচনা করা যেতে পারে। এই নিবন্ধে আমরা একটি নেস্টেড তালিকাকে ডিকশনারিতে রূপান্তর করার দুটি পন্থা দেখব যার উপাদানগুলি ডেটা স্ট্রাকচারের মতো একটি গাছকে প্রতিনিধিত্ব করে।
স্লাইসিং ব্যবহার করা
আমরা তালিকায় থাকা আইটেমগুলিকে অ্যাবি স্লাইসিং করি এবং তারপর আইটেমটি তালিকায় উপস্থিত আছে কিনা তা পরীক্ষা করি। যদি এটি উপস্থিত না হয় তবে আমরা এটিকে উপেক্ষা করি অন্যথায় আমরা এটি গাছে যুক্ত করি৷
উদাহরণ
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 পেতে 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': {}}}}