2012-03-13 14 views
6

मेरे पास एक साधारण सवाल है (या तो मैंने सोचा)।उच्चतम मूल्य वाले शब्दकोश से कुंजी को कैसे हटाएं?

मैं एक शब्दकोश है, मान लीजिए कि यह इस तरह दिखता है:

dict = {'A':100, 'a':10, 'T':50, 't':5} 

मैं बस उच्चतम मूल्य के साथ कुंजी हटाना चाहते हैं। मैंने यह कोशिश की:

del max(dict.values()) 

और यह त्रुटि संदेश है: 'सिंटेक्स त्रुटि: फ़ंक्शन कॉल को हटा नहीं सकता'। मैं अंतिम परिणाम होना चाहते हैं:

dict = {'a':10, 'T':50, 't':5} 

उत्तर

9

max(d.values()) आप अधिकतम मूल्य (100) दे देंगे, लेकिन एक शब्दकोश आप इसी कुंजी ('A') की जरूरत से किसी प्रविष्टि को हटाने के लिए।

आप ऐसा कर सकते हैं:

d = {'A':100, 'a':10, 'T':50, 't':5} 
key_to_delete = max(d, key=lambda k: d[k]) 
del d[key_to_delete] 

वैसे, आप अपने शब्दकोश dict का नाम नहीं चाहिए, क्योंकि है कि एक अंतर्निहित प्रकार का नाम है।

यदि उसी अधिकतम मूल्य के साथ कई प्रविष्टियाँ हो सकता है और आप उन सभी को नष्ट करना चाहते:

val_to_delete = max(d.values()) 
keys_to_delete = [k for k,v in d.iteritems() if v==val_to_delete] 
for k in keys_to_delete: 
    del d[k] 
+0

'लैम्ब्डा' की बजाय, 'd .__ getitem__' का उपयोग करना भी संभव है। –

+1

@ माइकल: सच है, या 'd.get' दूसरे उत्तर में पसंद है। – interjay

8

आप अधिकतम मूल्य की कुंजी पर भी नियंत्रण प्राप्त करने के लिए की जरूरत है।

ऐसा करें:

del d[max(d, key=d.get)] 

इसके अलावा, आप बुला अपने चर dict क्योंकि यह छाया से बचना चाहिए निर्मित नाम।

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