2011-09-07 19 views
20

संभव डुप्लिकेट:तरह मूल्यों और dict अजगर से चाबी की वापसी सूची

A = {'Name1':34, 'Name2': 12, 'Name6': 46,....} 

मैं की एक सूची चाहते हैं:
Python: Sort a dictionary by value

मैं इस तरह एक शब्दकोश है मानों द्वारा क्रमबद्ध कुंजी, यानी [Name2, Name1, Name6....]

धन्यवाद !!!

+0

धन्यवाद key तर्क है, लेकिन मैं इससे पहले कि मैं पूछा खोज की है और जवाब है कि मैं क्या करने की जरूरत नहीं है। – Alejandro

+3

मुझे असहमत होना है, आपके द्वारा खोजे जा रहे उत्तर के साथ बहुत सारे प्रश्न हैं। जैसे मेरे द्वारा लिंक किए गए प्रश्न में दूसरा सबसे ज्यादा वोट दिया गया उत्तर यहां उच्चतम मतदान वाले उत्तर के समान समाधान प्रदान करता है या उदा। [इन उत्तरों] (http://stackoverflow.com/questions/3417760/how-to-sort-a-python-dict-by-value)। आपको कुछ चीजों को आजमा सकते हैं, लेकिन सवाल निश्चित रूप से पहले से ही यहां था। –

+0

"उत्तर वह नहीं हैं जो मुझे चाहिए"। एक बेकार बयान। मौजूदा उत्तरों से क्या गुम है? ** वे कैसे अधूरे या भ्रामक हैं? ** क्या ** आपके प्रश्न को किसी तरह अद्वितीय बनाता है? कृपया ** विशिष्ट ** हो। –

उत्तर

30

एक कुंजी के रूप get विधि (शब्दकोश कुंजी iterating द्वारा पहुँचा जा सकता है) के साथ उपयोग sorted:

sorted(A, key=A.get) 
+4

यह गलत है क्योंकि यह केवल चाबियों को सॉर्ट करेगा, चाबियों को उनके मूल्यों से सॉर्ट नहीं करेगा। –

+1

लेकिन यह, कुंजी द्वारा क्रमबद्ध एक सूची देता है। मुझे मूल्यों द्वारा क्रमबद्ध कुंजी की एक सूची की आवश्यकता है। :) – Alejandro

+2

@ डेविड वोलेवर ओह, आप पूरी तरह से सही हैं। फिक्स्ड। – phihag

1

मैं का उपयोग करेंगे:

items = dict.items() 
items.sort(key=lambda item: (item[1], item[0])) 
sorted_keys = [ item[0] for item in items ] 

key तर्क सुलझाने के लिए एक प्रतिदेय है जो उपयोग करने के लिए सॉर्ट कुंजी देता है। इस मामले में, मैं (value, key) का एक टुपल लौट रहा हूं, लेकिन यदि आप चाहें तो मूल्य (यानी key=lambda item: item[1]) वापस कर सकते हैं।

+0

दूसरा समाधान मेरे लिए पढ़ने के लिए आसान और आसान है। –

2

sorted(a.keys(), key=a.get)

यह कुंजी सॉर्ट करता है, और प्रत्येक कुंजी के लिए, a.get का उपयोग करता है अपने प्रकार मूल्य के रूप में उपयोग करने के लिए मूल्य खोजने के लिए।

+0

ध्यान दें कि 'a.keys' का उपयोग करना अनावश्यक है, जो कुंजी की एक सूची बनाता है। 'ए' (या 'a.iterkeys()') पहले से ही एक ए के कुंजी पर एक पुनरावर्तनीय है। –

+1

हाँ, मुझे पता है कि यह अनावश्यक है, लेकिन मुझे लगता है कि यह बेहतर पढ़ता है। मैं जोड़ों के कंटेनर के रूप में डिकट्स के बारे में सोचता हूं, चाबियों के कंटेनर नहीं। –

4

उपयोग sorted की सलाह @Felix के लिए

sorted(d, key=d.get) 
संबंधित मुद्दे