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