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

Python中为何用del关键字通过变量无法删除字典元素?

为什么通过变量引用字典项执行del无法删除字典元素?

要搞懂这个问题,得先明确Python里id的概念:id()函数返回的是对象在内存中的唯一标识,每个存在的对象都有专属的id,只要对象没被回收,这个id就不会变。

结合你提供的代码来看:

>>> personal_details = {'f_name': 'Imani', 'l_name': 'Ritcher', 'age': 25}
>>> first_name = personal_details['f_name']
>>> id(first_name)
139769037520176
>>> id(personal_details['f_name'])
139769037520176

当你执行first_name = personal_details['f_name']时,并没有复制字典里的'Imani'字符串,而是让变量first_name和字典中'f_name'键对应的同一个内存对象建立了引用关系——两个id()结果完全相同,就证明了这一点。

接下来看两种del操作的区别:

  • del first_name:这个操作删除的是变量first_name本身,也就是切断了这个变量和目标字符串对象的引用关系,但字典里的'f_name'键依然保留着对该字符串对象的引用。所以字典的内容不会有任何变化,只是first_name这个变量被销毁了,后续再调用它就会触发NameError。
  • del personal_details['f_name']:这个操作是直接对字典本身动手,删除的是字典中的'f_name'键值对,相当于切断了字典对该键对应值对象的引用。这时候字典里的元素才会被真正移除,personal_details的内容也就随之更新。

总结一下:del操作的对象是你明确指定的东西——要么是变量,要么是字典的键值对,它不会顺着引用去删除其他地方的关联内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:28:22