什么是d.update(dict(a = 1,b = 2))和d.update(dict(' a' = 1,' b' = 2))

时间:2017-07-18 17:00:41

标签: python dictionary

我尝试过两种方法来更新python中的字典:

  1. d.update(dict(a=1, b=2))  这个效果很好。
  2. d.update(dict('a'=1, 'b'=2))  但是,这种方式给了我一个 SyntaxError: keyword can't be an expression 第二个陈述有什么问题?为什么必须a而不是'a'? 谢谢。

2 个答案:

答案 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的键作为参数名称调用函数,并将相应的值作为与这些参数名称关联的值