पाइथन का हुक्म क्यों देता है। () एक सूची लौटाता है और एक सेट नहीं?


90

मुझे उम्मीद है कि पायथन की कुंजी विधि एक सूची के बजाय एक सेट वापस करने के लिए होगी। चूँकि यह सबसे अधिक बारीकी से उस तरह की गारंटी से मिलता-जुलता है, जैसे एक हैशमैप की चाबी। विशेष रूप से, वे एक सेट की तरह अद्वितीय और क्रमबद्ध नहीं हैं। हालाँकि, यह विधि एक सूची देती है:

>>> d = {}
>>> d.keys().__class__
<type 'list'>

क्या यह केवल पायथन एपीआई में एक गलती है या कोई और कारण है जो मुझे याद आ रहा है?


1
यह नहीं रह गया है पायथन 3. में मामला है docs.python.org/3/library/stdtypes.html#dict-views
— बोरिस

जवाबों:


100

एक कारण यह है कि dict.keys()भाषा में सेट की शुरूआत से पहले।

ध्यान दें कि dict.keys()पायथन 3 में वापसी प्रकार बदल गया है: फ़ंक्शन अब सूची के बजाय "सेट-जैसे" दृश्य देता है ।

के लिए सेट की तरह देखा गया, संचालन सार आधार वर्ग के लिए निर्धारित के सभी collections.abc.Setउपलब्ध हैं (उदाहरण के लिए, ==, <, या ^)।


6
और यह एक सूची / सेट / आदि के बजाय एक दृश्य है। क्योंकि सभी चाबियों को कॉपी करने की आवश्यकता शायद ही हो।

31
और उन विचारों को एक के रूप में संभाला जा सकता है set()! जो dict.keys() | set()संचालन की अनुमति देते हैं । Py3 चट्टानों :)
— yota

2
यदि आप Py2 के साथ फंस गए हैं, तो आप इसे कॉल dict.viewkeys()करके और सेट ऑपरेशंस के साथ इसका उपयोग कर सकते हैं |, &...
— टोबिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.