Python 在For循环中从字典更新变量

Python 在For循环中从字典更新变量,python,dictionary,for-loop,variable-assignment,Python,Dictionary,For Loop,Variable Assignment,在这段代码中,我想通过循环一个字典来更新一些变量(x和y),该字典将变量散列到我想分配给它们的新值。但是,当我尝试使用for循环遍历并分配变量时,我只会更新临时循环var,而不会更新实际的键/变量。请通过某种方式在字典中循环来帮助我更新这些变量 x = 5 y = 10 dict1 = {x : 5, y : 10 } for var in dict1: var -= dict1[var] print(x,y) print(dict1) 我认为你对字典和变量

在这段代码中,我想通过循环一个字典来更新一些变量(
x
y
),该字典将变量散列到我想分配给它们的新值。但是,当我尝试使用
for
循环遍历并分配变量时,我只会更新临时循环
var
,而不会更新实际的键/变量。请通过某种方式在字典中循环来帮助我更新这些变量

x = 5
y = 10

dict1 = {x : 5,
         y : 10
}

for var in dict1:
  var -= dict1[var]
  

print(x,y)
print(dict1)


我认为你对字典和变量的工作方式有误解。通过写作

dict1 = {x: 5}
你写的相当于

dict1 = {5: 5}
因为您使用的是x,而不是变量名x

您想要做的事情可能通过使用来实现,但我建议您不要这样做-几乎总是有一个更简单、更少“黑魔法”的解决方案。然而,一个例子是:

x, y = 5, 10
dict1 = {
    "x" : 5,
    "y" : 10
}

for var in dict1:
    locals()[var] -= dict1[var]

print(x,y)
print(dict1)

我认为你对字典和变量的工作方式有误解。通过写作

dict1 = {x: 5}
你写的相当于

dict1 = {5: 5}
因为您使用的是x,而不是变量名x

您想要做的事情可能通过使用来实现,但我建议您不要这样做-几乎总是有一个更简单、更少“黑魔法”的解决方案。然而,一个例子是:

x, y = 5, 10
dict1 = {
    "x" : 5,
    "y" : 10
}

for var in dict1:
    locals()[var] -= dict1[var]

print(x,y)
print(dict1)

但是locals()函数做什么呢?另外,如何仅通过生成字符串而不是变量名来更新变量?我链接了关于
locals()
的python文档,因此您可以在那里阅读。我重复我的建议,不要把它作为现实世界问题的现实解决方案——可能有更好的、不同的方法,不用更新“变量列表”等等,我把locals()改为globals(),但程序仍然在运行。那么,有什么区别?不同的范围。但是locals()函数做什么呢?另外,如何仅通过生成字符串而不是变量名来更新变量?我链接了关于
locals()
的python文档,因此您可以在那里阅读。我重复我的建议,不要把它作为现实世界问题的现实解决方案——可能有更好的、不同的方法,不用更新“变量列表”等等,我把locals()改为globals(),但程序仍然在运行。那么,有什么区别?不同的范围。