2015-03-24 7 views
5

मैं निम्नलिखित शब्दकोशों है:अजगर शब्दकोश में मूल्यों (उतरते) और फिर कुंजी (आरोही) द्वारा क्रमबद्ध

mydict1 = {1: 11, 2: 4, 5: 1, 6: 1} 
mydict2 = {1: 1, 5: 1} 

उनमें से हर एक मैं करने के लिए पहली तरह मूल्यों (उतरते) द्वारा चाहेंगे, और उसके बाद चाबियाँ (आरोही), इस आउटपुट को उत्पन्न करना:

out_dict1 = [((1, 11), (2, 4), (5, 1), (6, 1)] 
out_dict2 = [(1, 1), (5, 1)] 

ऐसा करने का तरीका क्या है?

मैं इस प्रयोग किया जाता है लेकिन नहीं ऊपर दो मामलों के लिए लगातार परिणाम प्राप्त कर सकते हैं:

sorted(mydict.items(), key=lambda x: (x[1],x[0])) 
+0

क्या सभी चाबियाँ और मान हमेशा संख्या होने की गारंटी रखते हैं? यदि ऐसा है, तो @ thefoureye का समाधान सबसे सरल है। यदि नहीं, तो आपको थोड़ा अतिरिक्त आवश्यकता है ... जो पाइथन अपने प्रकार की गारंटी के लिए धन्यवाद सक्षम करता है ** स्थिर ** ... –

उत्तर

7

जब से तुम अवरोही क्रम में मूल्यों सॉर्ट करने के लिए, बस समारोह key पैरामीटर के लिए पारित में मूल्यों के मूल्य नकारना चाहते हैं , इस

sorted(mydict.items(), key=lambda x: (-x[1], x[0])) 

अब की तरह, मूल्यों अवरोही क्रम में हल हो जाएगा और अगर दो मानों बराबर हैं, कुंजी पर विचार किया जाएगा और वे आरोही क्रम में सॉर्ट कर दिया जाएगा।

+0

बस मैं दिनों की तलाश करने की कोशिश कर रहा हूं। और आज मुझे लैम्ब्डा ओएमजी के बारे में पता चला कि वे बहुत अच्छे हैं। – StackPointer

संबंधित मुद्दे