2017-02-18 6 views
8

dict.keys()にキーがない場合は、キーと値のペアをdictに挿入します。 基本的に私はPythonがdict内のキーを更新していない場合は

if key not in d.keys(): 
    d[key] = value 

でそれを行うことができます。しかし、より良い方法はありますか?またはこの問題のpythonic解決策は何ですか?

答えて

20

構文が無効であり、d.keys()に電話する必要もありません。

if key not in d: 
    d[key] = value 

で十分です。より明確で読みやすい方法はありません。

あなたはキーが既に存在する場合、既存の値を返しますdict.get()、再び更新することができます:

d[key] = d.get(key, value) 

が、私は強く反対をお勧めします。これはコードゴルフであり、メンテナンスと読みやすさの妨げになっています。

8

使用dict.setdefault():あまりにも値にアクセスしようとしたとき

>>> d = {1: 'one'} 
>>> d.setdefault(1, '1') 
'one' 
>>> d # d has not changed because the key already existed 
{1: 'one'} 
>>> d.setdefault(2, 'two') 
'two' 
>>> d 
{1: 'one', 2: 'two'} 
+2

'dict.setdefault()は、'、実際にのみ使用してください。 –

+2

@MartijnPieters:なぜそれは重要ですか? 'setdefault()'という名前は、何が起こっているのかを明確に記述しています。値がそれほど重要でないことを返します。少し奇抜なIMOです。なぜこれが望ましくないのか、あなたは簡単な説明やリンクを提供することができますか? – mhawke

+1

グループ化ループのように、値が存在することを期待する式で使用します。 'for ober in iterable:d.setdefault(key_for_obj(obj)、[])。append(obj)'。返される値については奇妙なものはありません。*はメソッドの全体の点です*。 –

関連する問題