एक कुशल द्विदिशीय हैश तालिका को लागू करना
एक द्विदिशात्मक हैश तालिका कुंजी-से-मूल्य और मूल्य-से-कुंजी लुकअप दोनों की अनुमति देती है। जबकि पायथन की अंतर्निहित डेटा संरचना कुंजी-से-मूल्य लुकअप में उत्कृष्टता प्राप्त करती है, यह कुशल मूल्य-से-कुंजी पुनर्प्राप्ति प्रदान नहीं करती है।
द्विदिशात्मक हैश तालिका को लागू करने के लिए एक प्रभावी तरीका एक वर्ग का उपयोग करना है जो मानक निर्देश का विस्तार करता है। बिडिक्ट नाम का यह वर्ग एक व्युत्क्रम निर्देशिका रखता है जो नियमित निर्देश में किसी भी संशोधन के साथ स्वचालित रूप से अपडेट हो जाती है।
कोड कार्यान्वयन:
class bidict(dict):
def __init__(self, *args, **kwargs):
super(bidict, self).__init__(*args, **kwargs)
self.inverse = {}
for key, value in self.items():
self.inverse.setdefault(value, []).append(key)
def __setitem__(self, key, value):
if key in self:
self.inverse[self[key]].remove(key)
super(bidict, self).__setitem__(key, value)
self.inverse.setdefault(value, []).append(key)
def __delitem__(self, key):
self.inverse.setdefault(self[key], []).remove(key)
if self[key] in self.inverse and not self.inverse[self[key]]:
del self.inverse[self[key]]
super(bidict, self).__delitem__(key)
मुख्य विशेषताएं:
bd = bidict({'a': 1, 'b': 2}) प्रिंट(बीडी) # {'ए': 1, 'बी': 2} प्रिंट(बीडी.इनवर्स) # {1: ['ए'], 2: ['बी']} bd['c'] = 1 # अब दो कुंजियों का मान समान है (= 1) प्रिंट(बीडी) # {'ए': 1, 'सी': 1, 'बी': 2} प्रिंट(बीडी.इनवर्स) # {1: ['ए', 'सी'], 2: ['बी']} डेल बीडी['सी'] प्रिंट(बीडी) # {'ए': 1, 'बी': 2} प्रिंट(बीडी.इनवर्स) # {1: ['ए'], 2: ['बी']} डेल बीडी['ए'] प्रिंट(बीडी) # {'बी': 2} प्रिंट(बीडी.इनवर्स) # {2: ['बी']} बीडी['बी'] = 3 प्रिंट(बीडी) # {'बी': 3} प्रिंट(बीडी.इनवर्स) # {2: [], 3: ['बी']}
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3