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

时间:2018-05-15 07:16:20

标签: 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}(当然假设已经定义了new_dict)。但是,在执行时,我会获得new_dict = {'key': 2}

我做错了什么?

3 个答案:

答案 0 :(得分:3)

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

new_dict.update(**{key: val})

或者,如果new_dict确实是一个字典,只需通过字典本身。

new_dict.update({key: val})

答案 1 :(得分:2)

update使用关键字参数来更新字典,字典或可迭代对。您可以将字典作为第一个参数传递:

new_dict.update(my_dict)

update旨在同时使用多个键。如果您只想设置单个值,则只需设置值:

new_dict[key] = value

答案 2 :(得分:2)

这是update方法的代码,所以你可以看到它的行为方式(它不是真正的源代码,只是一个例子):

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

因此,如果您致电new_dict.update(key=val),则kwargs将等于{"key": value}

如果要以新的方式设置新密钥,则需要在字典中传递参数。