在python中更新字典的整数值

时间:2012-03-27 21:09:54

标签: 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)

(noTaken,forecast& totalBranch都在此之上初始化为0) 提前谢谢!

1 个答案:

答案 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}}