मान लीजिए कि हम निम्नलिखित विधियों के साथ एक सेट डेटा संरचना को लागू करना चाहते हैं -
- सेट का नया इंस्टेंस बनाने वाला कंस्ट्रक्टर
- सेट में पूर्णांक वैल डालने के लिए (वैल) जोड़ें
- मौजूद है(वैल) यह जांचने के लिए कि वैल सेट में है या नहीं
- निकालें(वैल) सेट से वैल को हटाने के लिए
इसलिए, यदि हम एक सेट s बनाते हैं, तो s.add(10), s.add(20), s.add(10), s.exists(10), s.remove(10), s.exists( 10), s.exists(20), तो आउटपुट होगा
- s.add(10) के लिए यह 10 डालेगा
- s.add(20) के लिए यह 20 डालेगा
- 10 पहले से ही में है, इसलिए कुछ नहीं होगा
- s.exists(10) सच हो जाएगा क्योंकि 10 है
- s.remove(10) द्वारा 10 हटाएं
- s.exists(10) झूठी वापसी करेगा क्योंकि 10 हटा दिया गया है और एक तत्व केवल एक बार हो सकता है
- s.exists(20) सच हो जाएगा क्योंकि 20 वहां मौजूद है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- कन्स्ट्रक्टर को परिभाषित करें।
- बाल्टी:=एक खाली नक्शा और इसमें डेटा की एक सूची होगी
- एक फंक्शन ऐड () को परिभाषित करें। इसमें वैल लगेगा
- यदि मौजूद है (वैल) गलत है, तो
- बाल्टी के अंत में वैल डालें[वैल]
- परिभाषित करें कि कोई फ़ंक्शन मौजूद है ()। इसमें वैल लगेगा
- जब वैल बकेट में हो तो सही लौटें[वैल], अन्यथा गलत
- एक फंक्शन रिमूव () को परिभाषित करें। इसमें वैल लगेगा
- बाल्टी हटाएं[वैल]
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
from collections import defaultdict class MySet: def __init__(self): self.buckets = defaultdict(list) def add(self, val): if not self.exists(val): self.buckets[val].append(val) def exists(self, val): return val in self.buckets[val] def remove(self, val): del self.buckets[val] s = MySet() s.add(10) s.add(20) s.add(10) print(s.exists(10)) s.remove(10) print(s.exists(10)) print(s.exists(20))
इनपुट
s = MySet() s.add(10) s.add(20) s.add(10) s.exists(10) s.remove(10) s.exists(10) s.exists(20)
आउटपुट
True False True