【问题标题】:Updating Variables From a Dictionary In a For Loop在 For 循环中更新字典中的变量
【发布时间】:2021-02-20 04:37:49
【问题描述】:

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

x = 5
y = 10

dict1 = {x : 5,
         y : 10
}

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

print(x,y)
print(dict1)

【问题讨论】:

    标签: python dictionary for-loop variable-assignment


    【解决方案1】:

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

    dict1 = {x: 5}
    

    你写的相当于

    dict1 = {5: 5}
    

    因为您使用的是 x 而不是变量名 x。

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

    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(),但是程序还在运行。那么,有什么区别呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多