通过一次查找检索和替换字典中的值

Retrieve and replace value in a dict with a single lookup

当我希望同时检索 替换字典中的值时,我天真地写:

old_value = my_dict['key']
my_dict['key'] = new_value

但是..这是 my_dict 哈希表中 'key' 的两次查找。而且我确定只需要一个。

如何仅通过一次查找获得相同的行为?
python 会自动进行 JIT 优化吗?


[编辑]:我知道 python dict 查找很便宜,除非 my_dict 很大或操作在一毫秒内完成数十亿次,否则性能提升将是非常有趣的。
我只是好奇 python 中是否实现了这个看似基本的功能,例如 old_value = my_dict.retrieve_and_replace('key', new_value).

在 dict 中存储一个引用而不是一个值就可以满足你的要求。这不是一个优雅的演示,只是一个简单的演示:

>>> class MyMutableObject(object):
        pass
>>> m = MyMutableObject()
>>> m.value = "old_value"
>>> my_dict["k"] = m

现在,当您想将 my_dict["k"] 更改为新值但记住旧值时,只需在 "k" 上进行一次查找:

>>> m2 = my_dict["k"]
>>> m2.value
'old_value'
>>> m2.value = 'new_value'

由您来决定所付出的复杂性代价是否值得节省一次字典查找的时间。取消引用 m2.value 并重新分配它会在后台花费 2 次以上的字典查找。