我有一本字典,例如:
d = {'a':'a-val', 'b':'b-val', 'c':'c-long-val'*1000}
我需要重复访问d['c']
,如下所示:
print('value of c is', d['c'])
x_queue.put(d['c'])
some_function(d['c'])
但我想知道将 d['c']
分配给变量并每次使用它是否会更快:
c_value = d['c']` # is this assignment "worth it"?
print('value of c is', c_value)
x_queue.put(c_value)
some_function(c_value)
我的预感是这可能取决于
d
中的元素数量(d
越大,查找键的成本越高)d['c']
的大小(d['c']
越大,分配成本越高)
但我真的不确定这些选项之一(或另一个?)是否更快或更Pythonic。
最佳答案
虽然通过键访问字典值的平均时间复杂度为O(1),但在发生后最坏情况的时间复杂度为O(n)计算 key 的哈希值的开销。另一方面,变量赋值及其值的检索需要非常短的恒定时间,因此尽可能避免通过键重新评估字典值。
关于python - 将字典值分配给变量或连续访问更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57825332/