গভীর নেস্টেড ডিকশনারি (নেস্টেড JSON) কে ফ্ল্যাটেন করা হয় ইনার কীগুলোর সাথে আউটার কী কনক্যাটিনেট করে। পাইথনে রিকার্সিভ অথবা cherrypicker মডিউল দিয়ে এটি করা যায়।
১. রিকার্সিভ পদ্ধতি
একটি ফাংশন লিখে প্রতিটি আইটেম প্রসেস করুন। যদি ভ্যালু ডিকশনারি হয়, তবে রিকার্সিভ কল করুন।
উদাহরণ
dictA = {
"id": "0001",
"name": "hotdog",
"image": {
"url": "images/0001.jpg",
"thumbnail": {
"url": "images/thumbnails/0001.jpg",
"height,width": "2x4"
}
}
}
def dict_flatten(in_dict, dict_out=None, parent_key=None, separator="_"):
if dict_out is None:
dict_out = {}
for k, v in in_dict.items():
new_key = f"{parent_key}{separator}{k}" if parent_key else k
if isinstance(v, dict):
dict_flatten(v, dict_out, new_key)
continue
dict_out[new_key] = v
return dict_out
final_dict = dict_flatten(dictA)
print(final_dict)
# Output: {'id': '0001', 'name': 'hotdog', 'image_url': 'images/0001.jpg', ...}
২. cherrypicker মডিউল ব্যবহার
CherryPicker(dictA).flatten().get() দিয়ে সরাসরি ফ্ল্যাটেন করা যায়। ডিফল্ট সেপারেটর '-'-।
উদাহরণ
from cherrypicker import CherryPicker
picker = CherryPicker(dictA)
print(picker.flatten().get())