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

为何final_dictionary = starting_dictionary["c"]=7未按预期赋值?两种代码差异解析

两段Python字典操作代码的差异解析

一、执行结果差异

代码(1)的输出

{'a': 9, 'b': 8, 'c': 7}
7

代码(2)的输出

{'a': 9, 'b': 8, 'c': 7}
{'a': 9, 'b': 8, 'c': 7}

二、核心疑问解析:代码(1)为何不符合预期逻辑?

你预期final_dictionary会成为包含新增键值对的字典,但问题出在这行链式赋值代码:

final_dictionary = starting_dictionary["c"] = 7

Python的链式赋值是从右往左执行的:

  1. 第一步执行starting_dictionary["c"] = 7:这部分确实给starting_dictionary新增了键值对"c":7,符合你预期的第一步。
  2. 第二步,将这个赋值表达式的返回值赋值给final_dictionary。而Python中赋值表达式的返回值是被赋予的具体值(也就是7),不是字典对象,所以final_dictionary最终是整数7,而非你期望的字典。

如果要实现你预期的逻辑,需要把这行拆成两行:

starting_dictionary["c"] = 7
final_dictionary = starting_dictionary

这就和代码(2)的逻辑完全一致了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:32:41