2016-10-18 10 views
2

辞書_dictと変数nがあると仮定できます。辞書の既存の値を更新するもっと平凡な方法

_dict = {'a': 9, 'b': 7, 'c': 'someValue'} 
n = 8 

たとえば、1つのエントリのみを更新したいとします。 nの値がbの実際の値より大きい場合に限り、{'b': 7}になります。 私が得た解決策は、これまで{'a': 9, 'b': 8, 'c': 'someValue'}の望ましい結果を提供

_dict.update({'b': n for key, value in _dict.items() if key == 'b' and n > value}) 

です。だから今私の質問に:これを行うためのより短い、よりpythonicな方法はありますか?

_dict['b'] = max(_dict['b'], n) 

以上:あなただけの1つのキーを更新する必要がある場合は、ループにはポイントが存在しないことを

if n > _dict['b']: 
    _dict['b'] = n 
+1

なぜ新しい辞書を作成する必要がありますか? 'if'条件でこれを書くことができます。 – thefourtheye

+1

あなたは** one **キーのためになぜループしていますか?あなたは単に直接それにアクセスすることができます。 –

+0

@MartijnPieters @thefortheye私はこれまで、単一の値を条件付きで 'if'節で更新しようとしましたが、それはうまくいきませんでしたので、すぐに辞書をループするようにエスカレートしました。(私の場合は、 5-10キー)。しかし、あなたのアドバイスに感謝 – heiiRa

答えて

13

ような単純な(好ましくは、追加のモジュールをインポートせず)

+0

これは私の脳には単純すぎますが、私が探しているものです。遡って私の質問はかなりばかげているようです。ありがとう@Martijn Pieters! – heiiRa

1

その'b'をその2つの最高値に設定します。

+0

それは本当ですが、私はそれが1ライナーでこの小さなアクションを実行することが可能だと思ったが、あなたの提案に感謝! – heiiRa

1
if n > _dict['b']: 
    _dict['b'] = n 
関連する問題