ECH*_*ECH 1 python dictionary simulator
我正在创建一个缓存模拟器,我有一个字典,其中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)
Run Code Online (Sandbox Code Playgroud)
(没有,预测和totalBranch都在此之上初始化为0)在此先感谢!
一种更简洁的初始化方法是使用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
Run Code Online (Sandbox Code Playgroud)
输出:
{'a': [2, 0, 0], 'b': [0, 1, 0]}
Run Code Online (Sandbox Code Playgroud)
另请注意,我将值默认为a list而不是tuple使我们可以修改值到位,tuple不可修改是不可变的
| 归档时间: |
|
| 查看次数: |
1814 次 |
| 最近记录: |