मैं एक डेटा संरचना बनाना चाहता हूं जो एक अतिरिक्त कार्यक्षमता के साथ एक शब्दकोश की तरह व्यवहार करता है जो कि किस कुंजी को "उपभोग" किया गया है, इसका ट्रैक रखना है। कृपया ध्यान दें कि मैं केवल मूल्यों को पॉप नहीं कर सकता क्योंकि उनका पुन: उपयोग किया जा रहा है।पाइथन शब्दकोश कुंजी की स्मृति के साथ जो उपयोग किया गया था?
संरचना इन तीन मामलों का समर्थन करना चाहिए, यानी जब तक पहुँचा के रूप में सेवन किया कुंजी के रूप में चिह्नित:
class DictWithMemory(dict):
def __init__(self, *args, **kwargs):
self.memory = set()
return super(DictWithMemory, self).__init__(*args, **kwargs)
def __getitem__(self, key):
self.memory.add(key)
return super(DictWithMemory, self).__getitem__(key)
def __contains__(self, key):
self.memory.add(key)
return super(DictWithMemory, self).__contains__(key)
def get(self, key, d=None):
self.memory.add(key)
return super(DictWithMemory, self).get(key, d)
def unused_keys(self):
"""
Returns the list of unused keys.
"""
return set(self.keys()).difference(self.memory)
जैसा कि मैंने साथ बहुत परिचित नहीं हूँ:
if key in d:
...
d[key]
d.get(key)
यह मैं क्या लिखा है है dict के आंतरिक, क्या इस परिणाम को प्राप्त करने का एक बेहतर तरीका है?
कितनी बार प्रयोग करते हैं 'unused_keys()' ? यदि आपने इस सेट से चाबियाँ निकालने का प्रयास करने के लिए सेट और गेटटर को चाबियाँ जोड़ने के लिए सेटर को सजाया है, तो यह बेहतर परफॉर्मेंस हो सकता है - ** सुंदरता ** भाग के बारे में निश्चित नहीं है, सोचा – Aprillion
इसके अलावा: 'unused_keys' को वापस क्यों करना चाहिए सूची? इसमें कोई आंतरिक आदेश नहीं है, इसलिए यह एक सेट वापस करने के लिए समझ में आता है। –
@ थॉमस के: समरूपता के लिए, 'कुंजी' एक सूची लौट रहा है। – badzil