मुझे लगता है कि एक तानाशाह में संख्या, स्ट्रिंग और तानाशाही सबसे अधिक होती है। इसलिए मैं उस स्थिति को नजरअंदाज करता हूं जो ट्यूल, सूचियों और अन्य प्रकारों में एक तानाशाही के अंतिम आयाम में दिखाई नहीं देती है।
विरासत को ध्यान में रखते हुए, पुनरावृत्ति के साथ संयुक्त, यह प्रिंट समस्या को आसानी से हल करता है और डेटा को क्वेरी करने के दो तरीके भी प्रदान करता है, एक डेटा को संपादित करने का एक तरीका।
नीचे दिया गया उदाहरण देखें, एक तानाशाह जो छात्रों के बारे में कुछ जानकारी बताता है:
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': ''}