Skip to main content
 首页 » 编程设计

python之理解 Python 中的 setdefault

2025年05月04日16xing901022

我很难理解我的代码中发生了什么。因此,如果我有以下行:

d = {} 
d.setdefault("key",[]).append("item") 

返回

{'key': ['item']} 

所以我明白了 setdefault 的作用。它检查字典 d 中的 "key",如果不存在则创建它,否则如果存在则返回值。这将返回一个可以操作的副本,并将在原始字典中更新。这对我来说是一个新想法。这是否意味着 setdefault 返回的是深拷贝,而不是浅拷贝?试图让我的头脑围绕这个浅拷贝与深拷贝。

请您参考如下方法:

没有 Python 操作会进行隐式复制。曾经。就 Python 而言,隐式复制是邪恶的。

它是创建对象的文字。每次调用 setdefault 时,它都会评估其两个参数。当它评估其第二个参数 ([]) 时,将创建一个新列表。它与 a = [] 完全相同。

如果你写 el = [] 然后尝试 .setdefault 将 el 多次写入某个字典,你会看到没有复制。