আমি মনে করি একটি ডিক সংখ্যা, স্ট্রিং এবং ডিক নিয়ে গঠিত বেশিরভাগ সময় যথেষ্ট। সুতরাং আমি সেই পরিস্থিতিকে অগ্রাহ্য করি যা ডুপের চূড়ান্ত মাত্রায় টিপলস, তালিকাগুলি এবং অন্যান্য ধরণের উপস্থিত হয় না।
উত্তরাধিকার বিবেচনা করে, পুনরাবৃত্তির সাথে একত্রিত হয়ে এটি মুদ্রণের সমস্যাটি সুবিধামতভাবে সমাধান করে এবং ডেটা অনুসন্ধানের দুটি উপায় সরবরাহ করে, একটি উপায়ে সম্পাদনা করার এক উপায়।
নীচের উদাহরণটি দেখুন, একটি ডিক যা শিক্ষার্থীদের সম্পর্কে কিছু তথ্য বর্ণনা করে:
group=["class1","class2","class3","class4",]
rank=["rank1","rank2","rank3","rank4","rank5",]
data=["name","sex","height","weight","score"]
#build a dict based on the lists above
student_dic=dict([(g,dict([(r,dict([(d,'') for d in data])) for r in rank ]))for g in group])
#this is the solution
class dic2class(dict):
def __init__(self, dic):
for key,val in dic.items():
self.__dict__[key]=self[key]=dic2class(val) if isinstance(val,dict) else val
student_class=dic2class(student_dic)
#one way to edit:
student_class.class1.rank1['sex']='male'
student_class.class1.rank1['name']='Nan Xiang'
#two ways to query:
print student_class.class1.rank1
print student_class.class1['rank1']
print '-'*50
for rank in student_class.class1:
print getattr(student_class.class1,rank)
ফলাফল:
{'score': '', 'sex': 'male', 'name': 'Nan Xiang', 'weight': '', 'height': ''}
{'score': '', 'sex': 'male', 'name': 'Nan Xiang', 'weight': '', 'height': ''}
--------------------------------------------------
{'score': '', 'sex': '', 'name': '', 'weight': '', 'height': ''}
{'score': '', 'sex': '', 'name': '', 'weight': '', 'height': ''}
{'score': '', 'sex': 'male', 'name': 'Nan Xiang', 'weight': '', 'height': ''}
{'score': '', 'sex': '', 'name': '', 'weight': '', 'height': ''}
{'score': '', 'sex': '', 'name': '', 'weight': '', 'height': ''}