के साथ पायथन में सॉर्टिंग काउंटर संग्रह Python 3.3.x
में Counter
है जो मैं सॉर्ट करना चाहता हूं।
मुझे पता है कि मैं .most_common(x)
का उपयोग कर सकता हूं लेकिन मैं चाहता हूं कि समान मूल्य के मामले में चाबियाँ क्रमबद्ध रूप से क्रमबद्ध हों।
क्या ऐसा कोई तरीका है जो मैं कर सकता हूं? इस तरह के 'टाई ब्रेकर' को सेट करना?द्वितीयक अवधि (टाई ब्रेकर)
उत्तर
collections.Counter
वास्तव में एक शब्दकोश है और वे हैशिंग तकनीक पर भरोसा करते हैं, इसलिए हम वास्तव में क्रम में उन्हें एक्सेस नहीं कर सकते हैं। चूंकि ऑर्डर द्वारा एक्सेस करना संभव नहीं है, इसलिए एक शब्दकोश को सॉर्ट करना प्रश्न से बाहर है। लेकिन आप इसे tuples की सूची में परिवर्तित कर सकते हैं जो कुंजी और मान के अनुरूप है, और फिर उसे सॉर्ट करें। उदाहरण के लिए,
print(Counter('abracadabra').most_common())
# [('a', 5), ('r', 2), ('b', 2), ('c', 1), ('d', 1)]
print(sorted(Counter('abracadabra').most_common(), key=lambda x: (-x[1], x[0])))
# [('a', 5), ('b', 2), ('r', 2), ('c', 1), ('d', 1)]
हम sorted
तरह most_common
द्वारा दिए गए (key, value)
डेटा बनाते हैं। हम यह सुनिश्चित करना चाहते हैं कि वस्तुओं को उनके value
द्वारा अवरुद्ध किया जाना चाहिए और key
द्वारा आरोही में क्रमबद्ध किया जाना चाहिए। तो, हम यहां एक छोटी सी चाल का उपयोग करते हैं। अनुक्रम में प्रत्येक तत्व को सॉर्ट करने के लिए sorted
उस फ़ंक्शन को कॉल करेगा जिसे हम key
पैरामीटर के मान के रूप में पास करते हैं। उस फ़ंक्शन द्वारा लौटाए गए मान का उपयोग अन्य तत्वों की तुलना में उस विशेष तत्व का प्रतिनिधित्व करने के लिए किया जाएगा। हमारे मामले में, key
समारोह इस
lambda x: (-x[1], x[0])
यहाँ की तरह, x
सभी तत्वों अंततः मिल जाएगा जाता है और यह पहले और दूसरे तत्वों की स्थिति स्वैप और वास्तविक गणना भाग को नकारता। चूंकि, sorted
, डिफ़ॉल्ट रूप से, आरोही क्रम में डेटा को टाइप करता है, हम सबसे छोटी संख्या के विपरीत और इसके विपरीत बनाते हैं। उदाहरण के लिए,
[2, 3, 1]
आप आरोही क्रम में उन्हें सुलझाने के लिए चाहते हैं, sorted
, शुरुआत में सबसे छोटा तत्व और दूसरे स्थान पर अगले छोटी से छोटी और इतने पर रखना होगा जब तक यह सबसे बड़ा तत्व तक पहुँचता है। हमारे मामले में, यह [1, 2, 3]
बन जाता है। अवरोही क्रम में तत्वों को क्रमबद्ध करने के लिए, हम उनके नकारात्मक मान वास्तविक संख्याओं का प्रतिनिधित्व करते हैं।
sorted([2, 3, 1], key=lambda x: -x)
अब, जब sorted
की पसंद 2
, यह प्रयोग की जाने वाली मूल्य प्राप्त करने के key
फ़ंक्शन को कॉल और यह -2
और उसी तरह वापस आ जाएगी, 1
-1
हो जाएगा, 3
-3
हो जाएगा। यह तत्व को शुरुआत में सबसे छोटे से रखेगा। चूंकि हमें 312 के लिए -3
मिल गया है, 3 शुरुआत में होगा, 2
इसके आगे होगा और 1 इसके बाद होगा। तो परिणाम [3, 2, 1]
बन जाता है।
हम तत्व में दो वस्तुओं के आधार पर क्रमबद्ध करने के लिए एक ही तकनीक लागू करते हैं। हम पहली बार गिनती मानों के आधार पर उतरते हैं और यदि वे कुंजी के आधार पर क्रमबद्ध होते हैं, तो आरोही।
- 1. टुपल/टाई
- 2. हाइस्ट्रिक्स: कस्टम सर्किट ब्रेकर और रिकवरी लॉजिक
- 3. द्वितीयक कन्स्ट्रक्टर
- 4. टाई :: हैंडल :: सीएसवी
- 5. द्वितीयक डीएक्स तंत्र एंड्रॉइड
- 6. न्यूम्पी Argmax - यादृच्छिक टाई तोड़ने
- 7. अवधि
- 8. अवधि
- 9. सी # ट्रिविया गेम: टाई के मामले में क्या करना है?
- 10. कोको में विंडो शीर्षक पट्टी में द्वितीयक पाठ जोड़ना?
- 11. std :: टाई दुरुपयोग को बदलने के लिए
- 12. कितना अपवाद सुरक्षित है std :: टाई?
- 13. एंड्रॉइड - प्रोग्रेसबार में द्वितीयक प्रगति क्या है?
- 14. प्राथमिक और द्वितीयक वाई अक्ष सी #
- 15. jQuery मोबाइल द्वितीयक जावास्क्रिप्ट नहीं चला रहा
- 16. द्वितीयक NSSortDescriptor सॉर्ट कुंजी कैसे स्थापित करें?
- 17. वायर्ड टाइगर - द्वितीयक प्रतिकृति सेट सदस्य
- 18. एक हाइस्ट्रिक्स सर्किट ब्रेकर को कैसे लागू करें?
- 19. स्ट्रिंग से स्काला फिनिट अवधि अवधि
- 20. जेटेबल पंक्ति अवधि और कॉलम अवधि
- 21. std :: chrono :: अवधि सेकंड पर आधारित अवधि
- 22. निष्क्रियता अवधि
- 23. अवधि टैग
- 24. जावा अवधि
- 25. अवधि तत्व
- 26. टाइमआउट अवधि
- 27. कैसे अवधि
- 28. TimeSpan अवधि
- 29. ऑडियो अवधि को दोहराएं यदि ऑडियो अवधि ऑडियो अवधि से अधिक समय में
- 30. सी # टाई सूची वस्तुओं के साथ आइटम देखें