You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何dict.update(key=val)无法使用key变量引用的字符串?

问题分析与解决方法

嘿,这个问题我刚学Python的时候也踩过一模一样的坑!咱们来一步步拆解清楚:

你的错误根源

当你写new_dict.update(key=val)时,这里的key是Python关键字参数的固定名称,它会被当作字面量字符串'key'处理,而不是你循环里的变量key的值。所以每次循环你其实都在给new_dict里的'key'键重复赋值,最后一次循环val是2,自然就得到{'key': 2}了。

正确的实现方式

有几种简单的方法可以达到你的预期:

方法1:用字典字面量传递键值对

把循环中的键值对包装成一个小字典传给update():

my_dict = {'a': 1, 'b': 2}
new_dict = {}
for key, val in my_dict.items():
    new_dict.update({key: val})
# 此时 new_dict 是 {'a': 1, 'b': 2}

方法2:直接键赋值(更直观)

不用update(),直接通过键来赋值,代码更简洁易懂:

my_dict = {'a': 1, 'b': 2}
new_dict = {}
for key, val in my_dict.items():
    new_dict[key] = val

方法3:批量更新(最高效)

其实如果你的需求是把my_dict的所有键值对都复制到new_dict里,根本不需要循环,直接给update()传入整个字典就行,这是Python官方推荐的高效写法:

my_dict = {'a': 1, 'b': 2}
new_dict = {}
new_dict.update(my_dict)

这样就能精准得到你期望的{'a': 1, 'b': 2}啦!

内容的提问来源于stack exchange,提问作者Bjarne Thorsted

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:48:51