16

在编程方面,我是个业余爱好者,但我正在尝试使用 Python。基本上我想做的是对字典值使用数学。我能想到的唯一方法是将字典值分配给变量,然后将新值分配给字典。像这样的东西:

my_dictionary {
    'foo' = 10,
    'bar' = 20,
    }

variable = my_dictionary['foo']
new_variable += variable
my_dictionary['foo'] = new_variable

但是,当我尝试以这种方式分配变量时,会出现语法错误。有没有更好更直接的方法来做到这一点?

编辑:另外,我只是以此为例。假设这是一段代码,而不是整个程序。尚未声明新变量的事实完全无关紧要,我只想知道如何对字典值执行数学运算。另外,我正在尝试访问我有我的代码的函数之外的字典。

4

7 回答 7

18

您的代码中有各种错误。首先,您忘记了=第一行中的。此外,在 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
于 2012-11-16T23:47:29.117 回答
2

试试这个。它对我有用。

>>> d = {'a': 1, 'b': 2}
>>> locals().update(d)
>>> print(a)
1
于 2020-02-28T06:05:04.590 回答
1

您正在尝试对不存在的变量进行操作

new_variable += variable

new_variable 没有定义,所以你不能增加它。简单地试试。

my_dictionary['foo'] += my_dictionary['foo']

我假设 my_dictionary 只是伪代码,实际上并不是您在代码中使用的定义,否则这也是无效的。

于 2012-11-16T23:51:29.433 回答
0

此代码不分配变量my_dictionary。尝试:

my_dictionary = {
    'foo'...

此外,您需要在dict. 例如:'foo' : 10

编辑:忘了提,如果你+=用来改变一个变量,这个变量必须事先存在。

于 2012-11-16T23:46:10.117 回答
0

当你定义字典时你会得到一个SyntaxError,因为你做错了。尝试查看另一个 Python 程序(或文档),并按照那里显示的方式进行操作,而不是仅仅随心所欲。

my_dictionary = {'foo': 10, 'bar': 20}

数学部分在语法上很好,但你让它比你需要的要困难得多:

my_dictionary['foo'] += whatever
于 2012-11-16T23:47:21.290 回答
0

这不是你创建字典的方式。这是正确的语法:

my_dictionary = {
    'foo': 10,
    'bar': 20,
}

最后的逗号是不必要的,但可以减少后续编辑出错的可能性。你也可以这样做:

my_dictionary = dict(foo=10, bar=20)

您可以使用+=运算符来更新字典值:

my_dictionary['foo'] += 30
于 2012-11-16T23:47:27.223 回答
0

我喜欢以下方式,因为您可以将字典键与变量名匹配。此示例显示如何将 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

于 2016-02-17T21:41:07.123 回答