একটি আরও সাধারণ সমাধান যা নির্বিচারে-গভীরভাবে নেস্টেড ডিক্টস এবং তালিকাগুলি পরিচালনা করে:
def dumpclean(obj):
if isinstance(obj, dict):
for k, v in obj.items():
if hasattr(v, '__iter__'):
print k
dumpclean(v)
else:
print '%s : %s' % (k, v)
elif isinstance(obj, list):
for v in obj:
if hasattr(v, '__iter__'):
dumpclean(v)
else:
print v
else:
print obj
এটি আউটপুট উত্পাদন করে:
A
color : 2
speed : 70
B
color : 3
speed : 60
আমি অনুরূপ প্রয়োজনে চলে এসেছি এবং নিজের অনুশীলন হিসাবে আরও শক্তিশালী ফাংশন বিকাশ করেছি। এটি অন্যের পক্ষে যখন মূল্যবান হতে পারে তবে আমি এখানে এটি অন্তর্ভুক্ত করছি। নাস্তেস্টে চলতে চলতে, আমি কলটিতে আউটপুট স্ট্রিমটি নির্দিষ্ট করতে সক্ষম হওয়াও সহায়ক বলে মনে করি যাতে এর পরিবর্তে sys.stderr ব্যবহার করা যায়।
import sys
def dump(obj, nested_level=0, output=sys.stdout):
spacing = ' '
if isinstance(obj, dict):
print >> output, '%s{' % ((nested_level) * spacing)
for k, v in obj.items():
if hasattr(v, '__iter__'):
print >> output, '%s%s:' % ((nested_level + 1) * spacing, k)
dump(v, nested_level + 1, output)
else:
print >> output, '%s%s: %s' % ((nested_level + 1) * spacing, k, v)
print >> output, '%s}' % (nested_level * spacing)
elif isinstance(obj, list):
print >> output, '%s[' % ((nested_level) * spacing)
for v in obj:
if hasattr(v, '__iter__'):
dump(v, nested_level + 1, output)
else:
print >> output, '%s%s' % ((nested_level + 1) * spacing, v)
print >> output, '%s]' % ((nested_level) * spacing)
else:
print >> output, '%s%s' % (nested_level * spacing, obj)
এই ফাংশনটি ব্যবহার করে, ওপি'র আউটপুটটি দেখতে এমন দেখাচ্ছে:
{
A:
{
color: 2
speed: 70
}
B:
{
color: 3
speed: 60
}
}
যা আমি ব্যক্তিগতভাবে আরও দরকারী এবং বর্ণনামূলক বলে মনে করেছি।
এর সামান্য কম তুচ্ছ উদাহরণ দেওয়া:
{"test": [{1:3}], "test2":[(1,2),(3,4)],"test3": {(1,2):['abc', 'def', 'ghi'],(4,5):'def'}}
ওপি-র অনুরোধিত সমাধানটি এর ফল দেয়:
test
1 : 3
test3
(1, 2)
abc
def
ghi
(4, 5) : def
test2
(1, 2)
(3, 4)
যদিও 'বর্ধিত' সংস্করণ এটিকে দেয়:
{
test:
[
{
1: 3
}
]
test3:
{
(1, 2):
[
abc
def
ghi
]
(4, 5): def
}
test2:
[
(1, 2)
(3, 4)
]
}
আমি আশা করি এটি পরবর্তী ব্যক্তির এই ধরণের কার্যকারিতা সন্ধান করে কিছু মূল্য সরবরাহ করে।