2014-03-12 44 views
2

如何将变量链接到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 

那么,有没有办法给一个变量的值链接到一个dictictionary场头也不抬用于该领域中的更新是手动的价值?

回答

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
w = [410] 

myDict = {'myvar': w} 

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

w[0] = 520 

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

这是M4rtini的代码的版本与列表,而不是一个类的实例。
他有义务与指令v1.value = ...
我不得不修改列表中的数值与w[0] = ...

之所以像这样修改v1(实际上它的属性value)是你误称为一个变量,并且实际上是一个标识符,不会在一个意义上的“的存储器块,其内容可改变”,但表示一个可变引用一个对象到的标识符被绑定,对象值不能改变,因为它是不可变的对象。

请阅读数据模型文件和Python的执行模型是从语言如Java,PHP等

+0

@yari谢谢你的那些非常不同的解释。 - 请注意,我已经更正了我的答案:结果不是''''myvar':410}''和''{'myvar':520}''但''{'myvar':[410]}' ''和''{'myvar':[520]}'' – eyquem