d.update(dict(a = 1,b = 2))和d.update(dict('a'= 1,'b'= 2)之间有什么区别)

问题描述:

我试过两种方法来更新python中的字典:d.update(dict(a = 1,b = 2))和d.update(dict('a'= 1,'b'= 2)之间有什么区别)

  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'? 谢谢。

函数调用中的参数必须是标识符,而不是字符串常量。

出于同样的原因,你可以不写:

"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) 

A 参数必须是标识符a是一个标识符。 'a'不是,它是一个字符串文字(它是表达式的一种形式)。

在Python中,您可以使用两个星号来传递一个名为的名称为参数的字典。所以:

d.update(**{'a': 1, 'b': 2}) 

会工作。但对于这样的字典,这当然是无用的。但是,您可以在运行时构造字典d2,然后调用somefunc(**d2)d2的键作为参数名称,并将相应的值作为与这些参数名称关联的值调用函数。

+0

...但用字典这样做会是单一的毫无意义。 –

+0

@DanielRoseman:当然。我为一个更有用的用例添加了一个简短的描述。 –