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 回答