我正在创建一个缓存模拟器,我有一个字典,其中每个键都有3个值,
我想知道如何增加noTaken&的值。 totalBranch,因为我通过数据文件,因为我当前的方法不会更改值,查找的输出给我(1,1,0)或(0,1,0) - 我需要前两个值来增加
for line in datafile.readlines():
items = line.split(' ')
instruction = items[1]
if lookup.has_key(instruction):
if (taken == 1):
lookup[instruction] = (noTaken + 1, totalBranch + 1, prediction)
else:
lookup[instruction] = (noTaken, totalBranch + 1, prediction)
else:
if (taken == 1):
lookup[instruction] = (1, 1, prediction)
else:
lookup[instruction] = (0, 1, prediction)
(noTaken,forecast& totalBranch都在此之上初始化为0) 提前谢谢!
答案 0 :(得分:5)
初始化的一种更简洁的方法是使用defaultdict,然后你可以直接引用dict值中的元素,例如。
from collections import defaultdict
lookup = defaultdict(lambda: [0,0,0])
lookup['a'][0] += 1
lookup['b'][1] += 1
lookup['a'][0] += 1
print lookup
输出:
{'a': [2, 0, 0], 'b': [0, 1, 0]}
另请注意,我将值默认为list
而不是tuple
,以便我们可以修改值,tuple
不可变的{{1}}