我尝试过两种方法来更新python中的字典:
d.update(dict(a=1, b=2))
这个效果很好。d.update(dict('a'=1, 'b'=2))
但是,这种方式给了我一个
SyntaxError: keyword can't be an expression
第二个陈述有什么问题?为什么必须a
而不是'a'
?
谢谢。答案 0 :(得分:8)
函数调用中的参数必须是标识符,而不是字符串常量。
出于同样的原因你不能写:
"a" = 1
您也无法调用函数
dict("a"=5)
而是写:
a = 5
dict(a=5)
如果需要从字符串常量创建字典,请使用文字语法:
{"a": 5, "b": 17}
如果在调用函数时需要使用字符串作为变量名,则语法有点奇怪:
func(**{"a": 5}) # more or less equivalent to func(a=5)
但请注意,.update
函数可以通过以下方式调用:
d.update(a=1, b=2)
答案 1 :(得分:2)
参数必须是标识符。 a
是一个标识符。 'a'
不是,它是一个字符串文字(表达式的一种形式)。
在Python中,您可以使用两个星号将字典作为命名的参数列表传递。所以:
d.update(**{'a': 1, 'b': 2})
会奏效。但是有了这样的字典文字,这当然是没用的。但是,您可以在运行时构造字典d2
,然后调用somefunc(**d2)
以d2
的键作为参数名称调用函数,并将相应的值作为与这些参数名称关联的值