使用 dict() 函数创建字典对象?

Using dict() function to create a dictionary object?

我可以按如下方式创建 dictionary 对象:

a = dict(name='John', country='Norway')

输出为:{'name': 'John', 'country': 'Norway'}

但是,以下语句会引发错误:

dict([(name, 'John'), (country, 'Norway')])

Error:

NameError: name 'name' is not defined

在这两种语法中,我使用的 namecountry 没有引号,但只有第二种语法会引发错误。

第二种语法与以下代码一起正常工作:

a = dict([(1, 'John'), (2, 'Norway')])

输出:{1: 'John', 2: 'Norway'}

嗯...

对于第一个示例,它是这样完成的:

def dummydict(**kwargs):
    return kwargs

>>> dummydict(a=1, b=2, c=4)
{'a': 1, 'b': 2, 'c': 4}
>>> 

如您所见,**kwargs 将关键字参数解压缩到字典中,这就是它起作用的原因。

documentation所述:

**kwargs allows you to pass keyworded variable length of arguments to a function. You should use **kwargs if you want to handle named arguments in a function.

为什么第二个示例不起作用,因为它被视为变量名,第二个不是命名参数,它只是列表中的元组,您必须这样做:

dict([('name', 'John'), ('country', 'Norway')])