4

辞書が既に存在する場合にのみ、辞書のキーの値を変更したいと思います。

次の関数でこれを行うことができますが、これを行うより簡潔な方法があるかどうか疑問に思っています。

def modify_existing_key_value(d, key, new_value):
    if key in d:
        d[key] = new_value
    else:
        raise KeyError(k)

使用例は、誤ってディクショナリに新しいキーと値のペアを作成しないようにすることです。

4

1 に答える 1

7

キーを使用して要素にアクセスしてみてください。そこにある場合は何も起こらないため、実行は値をリセットする次の命令に進みます。そうでない場合KeyErrorは、必要に応じて例外が発生します。

def modify_existing_key_value(d, key, new_value):
    d[key] # We don't need the old value, just checking the key
    d[key] = new_value

関数の最初の行の全体的な目的:

d[key]

KeyError辞書にキーが含まれていない場合に例外を発生させることです。

d[key] を使用してKeyError例外を発生させると、ワンライナーは次のようになります。

d[key] = new_value if key in d else d[key]
于 2013-04-27T00:05:58.487 に答える