क्या dict.items()
और के बीच कोई लागू अंतर हैं dict.iteritems()
?
से अजगर डॉक्स :
dict.items()
: शब्दकोश की (की, मूल्य) जोड़े की सूची की एक प्रति लौटाएं ।
dict.iteritems()
: शब्दकोश (कुंजी, मूल्य) जोड़े पर एक पुनरावृत्ति लौटें ।
यदि मैं नीचे दिए गए कोड को चलाता हूं, तो प्रत्येक उसी वस्तु का संदर्भ देता है। क्या कोई सूक्ष्म अंतर है जो मुझे याद आ रहा है?
#!/usr/bin/python
d={1:'one',2:'two',3:'three'}
print 'd.items():'
for k,v in d.items():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
print 'd.iteritems():'
for k,v in d.iteritems():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
आउटपुट:
d.items():
they are the same object
they are the same object
they are the same object
d.iteritems():
they are the same object
they are the same object
they are the same object
d[k] is v
हमेशा सही वापस आएगा क्योंकि अजगर -5 और 256 के बीच सभी पूर्णांकों के लिए पूर्णांक ऑब्जेक्ट की एक सरणी रखता है: docs.python.org/2/c-api/int.html जब आप उस सीमा में एक इंट बनाते हैं तो आप वास्तव में सिर्फ मौजूदा वस्तु का संदर्भ मिलता है: >> a = 2; b = 2 >> a is b True
लेकिन,>> a = 1234567890; b = 1234567890 >> a is b False
iteritems()
करने के लिए परिवर्तन iter()
अजगर 3 में? ऊपर दिए गए दस्तावेज़ीकरण लिंक इस उत्तर के साथ मेल नहीं खाते।
items()
आइटम को एक ही बार में बनाता है और एक सूची देता है।iteritems()
एक जनरेटर लौटाता है - एक जनरेटर एक वस्तु है जो हर बार उसnext()
पर कॉल किए जाने वाले समय में एक आइटम को "बनाता है" ।