你能用一键查找代替字典值吗

  • 本文关键字:字典 查找 一键 python
  • 更新时间 :
  • 英文 :


我想知道是否有更有效的方法来替换字典中的特定值。通过";更有效";我的意思是避免两次查找同一把钥匙。我不认为这会有什么大的不同,但我发现自己做了很多事情:

foo = {'a': 0, 'b': 1}
foo['b'] = bar(foo['b'])

更新

我认为上面的任务是";查找同一个键两次";因为下面的印刷品";散列b";三次。

class LoudKey:
def __init__(self, key):
self.key = key
def __hash__(self):
print(f'Hashing {self.key}')
return self.key.__hash__()
b = LoudKey('b')
foo = {'a': 0, b: 1}
# first "Hashing b"
foo[b] = float(foo[b])
# next two "Hashing b"s

如果dict.__getitem__dict.__setitem__真的没有以某种方式重复工作,那么对此的阐述也可以被接受为答案。

您可以通过将字典项设置为可变类型,然后对其进行更改来实现这一点。最简单的方法是使用单个元素的列表。

>>> b = LoudKey('b')
>>> foo = {'a': [0], b: [1]}
Hashing b
>>> ref = foo[b]
Hashing b
>>> ref[0] = float(ref[0])
>>> foo
{'a': [0], <__main__.LoudKey object at 0x0000000014C66F40>: [1.0]}

不过,你说得对,这在实践中不会有太大区别。

最新更新