2012-11-28 10 views
6

पायथन 2.6.6 जब मैं कॉल करता हूं। परिणाम के परिणामों पर .get परिणाम एक ट्यूपल है। यह मुझे कोई समझ नहीं आता है। उदाहरण:पाइथन में एक जंजीर शब्दकोश .get() क्यों एक डिफ़ॉल्ट रूप से प्रदान किया जाता है जब डिफ़ॉल्ट प्रदान नहीं किया जाता है?

box = {}.get('test1',{}).get('test2','hrmm'), 
print type(box) 

बाहर

<type 'tuple'> 

प्रिंट यह मेरे लिए कोई मतलब नहीं है। दूसरी तरफ स्पष्ट रूप से डिफ़ॉल्ट एक साधारण स्ट्रिंग है। तो क्या देता है? किसी भी अंतर्दृष्टि के लिए धन्यवाद।

उत्तर

12

पर पीछे अल्पविराम आप पंक्ति के अंत में पीछे अल्पविराम है नहीं है, तो आप एक एक तत्व टपल में {}.get('test1',{}).get('test2','hrmm') का परिणाम हो रही है।

>>> box = 1, 
>>> box 
(1,) 
>>> type(box) 
<type 'tuple'> 
+1

+1:

यह इस तरह एक साधारण शाब्दिक साथ काम करता है का एक उदाहरण है। पाइथन के शुरुआती लोगों के लिए कई जाल नहीं हैं, लेकिन ट्यूपल लिटल के लिए वाक्यविन्यास में कॉमा की भूमिका उनमें से एक है। आम तौर पर यह दूसरी तरफ काटता है, हालांकि - लोग '(foo)' को 'foo' युक्त टुपल होने की उम्मीद करते हैं, जबकि वास्तव में यह केवल 'foo' है। यह सवाल ठेठ गलती का एक मनोरंजक विचलन दर्शाता है। –

+0

कृपया धन्यवाद। मैं अभी बहुत मूर्खतापूर्ण महसूस करता हूं। हा हा हां यह निश्चित रूप से समझ में आता है कि अल्पविराम किसी प्रकार का अनुक्रम प्रकार वस्तु बनायेगा। मैं कई संशोधनों और परीक्षणों में पिछली कॉमा को देखने के लिए पूरी तरह से अंधा था। –

2

अपने बॉक्स काम

संबंधित मुद्दे

 संबंधित मुद्दे