变量作为Python中的哈希值

时间:2014-03-12 18:57:04

标签: python

如何在Python中将变量链接到字典值? 请考虑以下代码:

a_var = 10
a_dict = {'varfield':a_var, 'first':25, 'second':57} 

# a_dict['varfield'] == 10 now

a_var = 700   
# a_dict['varfield'] == 10 anyway

那么有没有办法将变量的值链接到字典中的字段而不查找该字段并手动更新它的值?

2 个答案:

答案 0 :(得分:1)

您需要将字典键的值设置为可以更改值的对象。

例如:

class valueContainer(object):
    def __init__(self, value):
        self.value = value
    def __repr__(self):
        return self.value.__repr__()


v1 = valueContainer(1)

myDict = {'myvar': v1}
print myDict 
#{'myvar': 1}

v1.value = 2 
print myDict
#{'myvar': 2}

答案 1 :(得分:1)

w = [410]

myDict = {'myvar': w}

print myDict 
#{'myvar': [410]}

w[0] = 520

print myDict
#{'myvar': [520]}

这是M4rtini代码的版本,带有列表而不是类的实例 他有义务使用v1指令修改value(实际上其属性v1.value = ...),
我有义务使用w[0] = ...

修改列表中的值

这样做的原因是你错误地称之为变量,实际上是标识符,并没有指定一个“内存块”内容的变量可以更改“但引用 对象,标识符为绑定,其值不能更改的对象,因为它是不可变对象。

请阅读有关数据模型和Python执行模型的文档说明,这些文档与Java,PHP等语言完全不同。