2012-03-13 15 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

'lambda 'ではなく、' d .__ getitem__'を使うこともできます。 –

+1

@Michael:他の答えでは真、または 'd.get'です。 – interjay

8

をあなたは、最大値にキーのホールドを取得する必要があります。

は、代わりにこれを試してみてください:それは組み込みの名前をシャドウするので

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

また、あなたはあなたの変数dictを呼び出さないようにする必要があります。

関連する問題