dict
एस में, केवल चाबियों को हेशेबल होना चाहिए, मान नहीं। namedtuple
के पास कुंजी नहीं है, इसलिए हैशबिलिटी कोई समस्या नहीं है।
हालांकि, उनके पास एक और अधिक कठोर प्रतिबंध है - उनके मुख्य समकक्ष, "फ़ील्ड नाम", तार होना चाहिए।
मूल रूप से, अगर आप एक वर्ग की तरह के उदाहरण के एक झुंड बनाने के लिए जा रहे थे: आप उन्हें __init__
में सेट करने के बाद
class Container:
def __init__(self, name, date, foo, bar):
self.name = name
self.date = date
self.foo = foo
self.bar = bar
mycontainer = Container(name, date, foo, bar)
और विशेषताओं को बदल नहीं, आप के बजाय इस्तेमाल कर सकते हैं
Container = namedtuple('Container', ['name', 'date', 'foo', 'bar'])
mycontainer = Container(name, date, foo, bar)
प्रतिस्थापन के रूप में
।
बेशक
, आप dict
रों जहां हर एक में एक ही चाबी इस्तेमाल किया जाता का एक समूह बनाने के लिए, लेकिन यह सोचते हैं आप कुंजी के रूप में ही मान्य अजगर पहचानकर्ता है और अस्थिरता की जरूरत नहीं है सकते हैं,
mynamedtuple.fieldname
खूबसूरत से
mydict['fieldname']
और
mynamedtuple = MyNamedTuple(firstvalue, secondvalue)
खूबसूरत है
mydict = {'fieldname': firstvalue, 'secondfield': secondvalue}
अंत में, namedtuple
रों आदेश दिया जाता है, नियमित रूप से dict
रों के विपरीत है, तो आप आपको क्षेत्रों में परिभाषित किया गया है, एक dict
विपरीत में आइटम प्राप्त की तुलना में।
इस प्रश्न पर एक नज़र डालें - http://stackoverflow.com/questions/2970608/what-are-named-tuples-in-python – ronakg
यह [ऊपर वर्णित प्रश्न] का एक डुप्लिकेट नहीं है (https://stackoverflow.com/questions/2970608/what-are-named-tuples-in-python)। दोनों पूरक हैं। – Dennis