Python 为什么dict.update(key=val)不使用key引用的字符串?

Python 为什么dict.update(key=val)不使用key引用的字符串?,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,正如标题所示,我正在尝试使用如下代码块中的update()方法更新字典 for key, val in my_dict.items(): new_dict.update(key=val) 如果my_dict={'a':1,'b':2}我希望结果是new_dict={'a':1,'b':2}(当然假设新的dict已经定义)。然而,当执行时,我得到的是new_dict={'key':2} 我做错了什么?关键字参数始终使用固定标识符作为键。改为使用关键字扩展 new_dict.update(

正如标题所示,我正在尝试使用如下代码块中的
update()
方法更新字典

for key, val in my_dict.items():
    new_dict.update(key=val)
如果
my_dict={'a':1,'b':2}
我希望结果是
new_dict={'a':1,'b':2}
(当然假设新的dict已经定义)。然而,当执行时,我得到的是
new_dict={'key':2}


我做错了什么?

关键字参数始终使用固定标识符作为键。改为使用关键字扩展

new_dict.update(**{key: val})
或者,如果新的dict确实是一个dict,只需传递dict本身

new_dict.update({key: val})
使用关键字参数更新字典、字典或iterable对。您可以将字典作为第一个参数传递:

new_dict.update(my_dict)
更新
设计用于同时使用多个键。如果您只想设置单个值,可以只设置值:

new_dict[key] = value

下面是
update
方法的代码,因此您可以了解它的行为方式(它不是真正的源代码,只是一个示例):

因此,如果您调用
new_dict.update(key=val)
您的
kwargs
将等于
{“key”:value}


如果您想友好地设置新的键,您需要在字典中传递参数

我知道必须有一个简单的解决办法!非常感谢:)10分钟延迟过后,我将标记为已接受。在
new_dict.update(key=val)
中,
key
不是您的变量,它是
update
方法中关键字参数中的命名参数。您可以执行
new\u dict.update(my\u dict)
并跳过for循环。我想这也可以。我最初决定使用循环,因为我想根据
my_dict
中存在的键调用一些条件(例如
如果key=='timepoint':做点什么
),那么您可以使用
new_dict[key]=value
那么,使用
update
new_dict[key]有什么好处吗=value
?如果设置单个元素,它们是相同的。我还尝试使用了
new_dict.update(dict(key=val))
,得到了相同的结果。如果我使用冒号而不是等号,它会工作吗?
dict(key=val)
创建一个字典
{“key”:val}
,其中“key”作为字符串,这就是为什么它会给你相同的值。如果您执行
new_dict.update({key:val})
它将按照您的需要运行。
def update(self, other_dict={}, **kwargs):
    for k, v in other_dict.items():
        self[k] = v
    for k, v in kwargs.items():
        self[k] = v