2012-03-13 28 views
6

Basit bir sorum var (ya da düşündüm).Bir anahtarın en yüksek değere sahip bir sözlükten nasıl silinir?

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

Ben sadece en yüksek değere sahip anahtarını silmek istiyorum: Ben bir sözlük var

, bu gibi görünüyor varsayalım.

del max(dict.values()) 

ve bu hata iletisi:: Bu çalıştı 'Dizimi Hatası: işlev çağrısı silmek veremeyiz'. Ben Sonuçta olmak istiyorum:

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

cevap

9

max(d.values()) size maksimum değeri (100) verecektir, ancak karşılık gelen tuşa ('A') gereken bir sözlükten bir girdiyi silmek için.

Bunu yapabilirsin: yani yerleşik bir türünün adı olduğu için

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

arada, size sözlüğü dict isim olmamalıdır. Orada aynı maksimum değere sahip birden fazla giriş olması ve hepsini silmek isteyebilirsiniz Eğer

:

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

'lambda' yerine 'd .__ getitem__' kullanmak da mümkündür. –

+1

@Michael: Doğru ya da diğer cevapta "d.get" gibi. – interjay

8

Sen maksimum değere anahtarın da ele geçirmeleri gerekir.

yerine bu deneyin:

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

Ayrıca, bu gölgeler senin değişken dict çünkü çağıran kaçınmalıdır dahili isim.

İlgili konular