我想建立一个将变量分配给键的字典,并且要在变量执行时更改键。我了解到,当您将值分配给字典,列表或变量时,它会保留值,而不是确切的代码。我该如何解决? (如果您无法通过print
函数周围的括号来判断,这就是Python 2。)
我尝试使用下面的代码来更改字典中的键,但是当该键不起作用时,我在Google上搜索了如何解决此问题。堆栈溢出是我的最后选择。
var = 7
dictionary = {
"Var": var
}
var += 3
print var
print dictionary["Var"]
我希望输出为
10
10
但是,它输出
10
7
这意味着var
发生了变化,但dictionary["Var"]
却没有变化。
答案 0 :(得分:1)
我怀疑您必须使用可变变量,例如:
var = [7]
dictionary = {
"Var": var
}
var[0] += 3
print(dictionary)
{'Var': [10]}
答案 1 :(得分:0)
为什么不显式声明字典而不是使用var
,然后将3加到值本身
#declare the dictionary
dictionary = {
"Var": 7
}
#Add 3 to the value
dictionary['Var'] += 3
print(dictionary["Var"])
输出将为10
答案 2 :(得分:0)
这是因为python中的int
是不可变的。
var = 7
这将创建新对象7
,并对此对象var
进行新引用。
dictionary = {
"Var": var
}
此处您要为键'Var'
分配与var相同的引用。所以现在dictionary['Var']
和var
指向同一个对象7
。
现在,当您编写:var += 3
时,它将创建一个新对象10
并将var
分配给该对象。
要忽略它,变量var
应该是一些可变对象,或者您应该更新字典值:dictionary['Var'] += 3