dictionary - python dict remove duplicate values by key's value? -


एक शब्द

  dic = {1: 'a', 2: 'a' , 3: 'बी', 4: 'ए', 5: 'सी', 6: 'डी', 7: 'डी', 8: 'ए', 9: 'ए'  

मैं डुप्लिकेट मानों को निकालना चाहता हूं, केवल एक के / वी युगल को रखना, उन डुप्लिकेट मानों के "कुंजी" चयन के बारे में, यह अधिकतम या न्यूनतम या यादृच्छिक रूप से उन डुप्लिकेटेड आइटम की कुंजी में से एक का चयन कर सकता है।

मैं ak / v स्वैप का उपयोग नहीं करना चाहता क्योंकि इससे कुंजी चयन को नियंत्रित नहीं किया जा सकता है।

उदाहरण के लिए "a" मान लें

  1: 'a ', 2:' ए ', 4:' ए ', 8:' ए ', 9:' ए ' 

अधिकतम कुंजी होगी {9:' ए '} और मिनट {1: 'a'} होगा, और यादृच्छिक यह किसी भी एक को चुनना होगा।

और, यदि कुंजी अन्य प्रकार के हैशणीय मान है, उदाहरण के लिए, स्ट्रिंग, तो ऐसे चयन कैसे करें

क्या कोई मुझे साझा कर सकता है एक विचार?

धन्यवाद!

  आयात करें itertools के रूप में newdic = {} के लिए v, ग्रैपी में it.groupby (सॉर्ट किया हुआ (v, k) के लिए k, v में dic.items)): newdic [min (k के लिए _, k में grp)] = v   min  के बदले में अन्य "चयन" फ़ंक्शंस (जो निश्चित रूप से काम करता है, भले ही चाबियाँ स्ट्रिंग हैं) - उस मामले में आपको "आधिकारिक पहली" कुंजी देगी )। 

एक ऐसा मामला जिसमें चयन समारोह में कुछ देखभाल की ज़रूरत होती है, जब एक ही मूल्य से संबंधित चाबियाँ गैर-तुलनीय हो सकती है (उदाहरण के लिए, जटिल संख्याएं, या, पायथन 3 में, अलग-अलग नहीं की वस्तुओं -सभी-संख्यात्मक प्रकार) key = में न्यूनतम कुछ भी ठीक नहीं होगा; -)।


Comments

Popular posts from this blog

google indexing -

java - using conditions in XPath expressions -

wpf - accessing a visual element in code -