के बराबर मैं पाइथन में एक सी ++ प्रोग्राम पोर्ट कर रहा हूं। ऐसे कुछ स्थान हैं जहां यह std::set
का उपयोग उन वस्तुओं को संग्रहीत करने के लिए करता है जो अपने स्वयं के तुलना ऑपरेटर को परिभाषित करते हैं। मैं एक सामान्य शब्दकोश उपयोग करने की कोशिश के बाद से अजगर मानक पुस्तकालय std::set
का कोई समकक्ष (किसी क्रमित मुख्य-मान मैपिंग डेटा संरचना) है और फिर इसे छँटाई, जब पुनरावृत्ति इस तरह:पायथन समकक्ष :: std :: set और std :: multimap
def __iter__(self):
items = self._data.items()
items.sort()
return iter(items)
हालांकि, रूपरेखा है कि सभी ने दिखा दिया है .sort()
से __cmp__
पर कॉल एक गंभीर बाधा हैं। मुझे एक बेहतर डेटा संरचना की आवश्यकता है - अनिवार्य रूप से एक क्रमबद्ध शब्दकोश। क्या किसी को मौजूदा कार्यान्वयन के बारे में पता है? यह विफल होने पर, मुझे यह कैसे लागू करना चाहिए इस पर कोई सिफारिशें? प्रदर्शन प्रदर्शन लिखने से प्रदर्शन अधिक महत्वपूर्ण है और समय स्मृति से अधिक महत्वपूर्ण है।
बोनस अंक यदि यह प्रति कुंजी एकाधिक मानों का समर्थन करता है, जैसे C++ std::multimap
।
ध्यान दें कि OrderedDict
कक्षा मेरी आवश्यकताओं के अनुरूप नहीं है, क्योंकि यह प्रविष्टि के क्रम में आइटम लौटाती है, जबकि मुझे उनकी __cmp__
विधियों का उपयोग करके क्रमबद्ध करने की आवश्यकता होती है।
डेटा संरचनाओं के बारे में सीधे सवाल का जवाब नहीं देते हुए इसने प्रदर्शन में सुधार करने में निश्चित रूप से मदद की है। +1 – EMP