如何将字典值分配给 Python 中的变量?
Posted
技术标签:
【中文标题】如何将字典值分配给 Python 中的变量?【英文标题】:How do I assign a dictionary value to a variable in Python? 【发布时间】:2012-11-05 17:39:21 【问题描述】:在编程方面我是个业余爱好者,但我正在尝试使用 Python。基本上我想要做的是对字典值使用数学。我能想到的唯一方法是将字典值分配给变量,然后将新值分配给字典。像这样的:
my_dictionary
'foo' = 10,
'bar' = 20,
variable = my_dictionary['foo']
new_variable += variable
my_dictionary['foo'] = new_variable
但是,当我尝试以这种方式分配变量时,会出现语法错误。有没有更好更直接的方法来做到这一点?
编辑:另外,我只是以此为例。假设这是一段代码,而不是整个程序。尚未声明新变量的事实完全无关紧要,我只想知道如何对字典值进行数学运算。 另外,我正在尝试访问包含我的代码的函数之外的字典。
【问题讨论】:
这并不完全清楚。new_variable
是从哪里来的?如果您尝试对字典中的值进行更新分配,只需执行 my_dict['foo'] += 1
或其他操作。
【参考方案1】:
试试这个。它对我有用。
>>> d = 'a': 1, 'b': 2
>>> locals().update(d)
>>> print(a)
1
【讨论】:
【参考方案2】:我喜欢以下方式,因为您可以将字典键与变量名匹配。此示例显示了如何将 char 与相应的变量名称匹配(并且该变量名称甚至由其他变量决定):
va1 = 50
val2= 20
a = val + 1 * val2
b = val + 2 * val2
space = val + 3 * val2
my_dictionary =
'a':a,
'b':b,
' ':space
msg = "aB "
for char in msg:
try:
char = char.lower()
print my_dictionary [char]
except:
print my_dictionary [char]
输出:
70
90
110
【讨论】:
【参考方案3】:您正在尝试对不存在的变量进行操作
new_variable += variable
new_variable 没有定义,所以你不能增加它。试试吧。
my_dictionary['foo'] += my_dictionary['foo']
我假设 my_dictionary 只是伪代码,实际上并不是您在代码中使用的定义,否则这也是无效的。
【讨论】:
【参考方案4】:您的代码中存在各种错误。首先,您忘记了第一行中的=
。此外,在 dict 定义中,您必须使用 :
将键与值分开。
接下来你必须先定义new_variable
,然后才能添加一些东西。
这将起作用:
my_dictionary = 'foo' : 10, 'bar' : 20
variable = my_dictionary['foo']
new_variable = 0 # Get the value from another place
new_variable += variable
my_dictionary['foo'] = new_variable
但您可以简单地将new_variable
直接添加到 dict 条目中:
my_dictionary = 'foo' : 10, 'bar' : 20
variable = my_dictionary['foo']
new_variable = 0 # Get the value from another place
my_dictionary['foo'] += new_variable
【讨论】:
【参考方案5】:这不是您创建字典的方式。这是正确的语法:
my_dictionary =
'foo': 10,
'bar': 20,
最后的逗号是不必要的,但可以减少后续编辑出错的可能性。你也可以这样做:
my_dictionary = dict(foo=10, bar=20)
您可以使用+=
运算符来更新字典值:
my_dictionary['foo'] += 30
【讨论】:
【参考方案6】:当你定义字典时你会得到一个SyntaxError
,因为你做错了。尝试查看另一个 Python 程序(或文档),并按照那里显示的方式进行操作,而不是随随便便。
my_dictionary = 'foo': 10, 'bar': 20
数学部分在语法上很好,但你做的比你需要的要难:
my_dictionary['foo'] += whatever
【讨论】:
【参考方案7】:此代码未分配变量my_dictionary
。试试:
my_dictionary =
'foo'...
另外,您需要在dict
中使用冒号进行键值初始化。例如:'foo' : 10
编辑:忘了说,如果你使用+=
来改变一个变量,这个变量必须事先存在。
【讨论】:
以上是关于如何将字典值分配给 Python 中的变量?的主要内容,如果未能解决你的问题,请参考以下文章
当我将一个字典分配给另一个变量时,为啥 Python 会同时更新两个字典? [复制]
如何将 python 对象(如字典)分配给 pandas 列