2015-12-09 11 views
6

मैं शब्दकोश {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7}क्रमबद्ध शब्दकोश एकाधिक मानों के आधार

मैं फिर उसके अंतर्गत इस शब्दकोश पहले संख्यानुसार सॉर्ट करने के लिए, वर्णानुक्रम की जरूरत है। यदि 2 आइटमों में एक ही संख्या कुंजी है, तो उन्हें वर्णानुक्रम में क्रमबद्ध करने की आवश्यकता है।

इस के उत्पादन में Bob, Alex, Bill, Charles

मैं लैम्ब्डा, सूची समझ, आदि का उपयोग की कोशिश की, लेकिन मैं उन्हें सही ढंग से सुलझाने के लिए प्राप्त करने के लिए नहीं कर पा रहे होना चाहिए।

उत्तर

11

मुख्य कार्य के साथ sorted का उपयोग करना (मूल्य (d[k] द्वारा आदेश तो) पहले, कुंजी k):: आप तरह कुंजी जो शब्दकोश के मूल्यों से हो जाएगा इसकी कुंजी निर्दिष्ट कर सकते हैं, और फिर

>>> d = {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7}  
>>> sorted(d, key=lambda k: (d[k], k)) 
['Bob', 'Alex', 'Bill', 'Charles'] 
4

sorted() का उपयोग कर शब्दकोश के आइटम (जो टुपल्स हैं) पर सॉर्ट करें।

>>> d = {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7} 
>>> sorted(d.items(), key=lambda x:(x[1],x[0])) 
[('Bob', 3), ('Alex', 4), ('Bill', 4), ('Charles', 7)] 
>>> [t[0] for t in sorted(d.items(), key=lambda x:(x[1],x[0]))] 
['Bob', 'Alex', 'Bill', 'Charles'] 
संबंधित मुद्दे