সমস্যা বিবরণ
পাইথন ডিকশনারি নেস্টেড হতে পারে (ডিকশনারির ভেতরে ডিকশনারি)। ডিকশনারির নেস্টিং লেভেল বা ডেপথ বের করতে হবে।
পদ্ধতি ১: স্ট্রিং কনভার্সন এবং কাউন্ট
ডিকশনারিকে স্ট্রিংয়ে রূপান্তর করুন, তারপর { ক্যারেক্টার কাউন্ট করুন।
dictA = {1: 'Sun', 2: {3: {4: 'Mon'}}}
dictStr = str(dictA)
cnt = 0
for ch in dictStr:
if ch == '{':
cnt += 1
print("The depth of dictionary:", cnt) # 3
পদ্ধতি ২: রিকার্শন ব্যবহার
রিকার্সিভ ফাংশন লিখুন: যদি ভ্যালু ডিকশনারি হয়, তবে ১ + সাব-ডিকশনারির ম্যাক্স ডেপথ।
def finddepth(dictA):
if isinstance(dictA, dict):
return 1 + (max(map(finddepth, dictA.values())) if dictA else 0)
return 0
dictA = {1: 'Sun', 2: {3: {4: 'Mon'}}}
print("The depth of dictionary:", finddepth(dictA)) # 3