我很难理解我的代码中发生了什么。因此,如果我有以下行:
d = {}
d.setdefault("key",[]).append("item")
返回
{'key': ['item']}
所以我明白了 setdefault 的作用。它检查字典 d 中的 "key",如果不存在则创建它,否则如果存在则返回值。这将返回一个可以操作的副本,并将在原始字典中更新。这对我来说是一个新想法。这是否意味着 setdefault 返回的是深拷贝,而不是浅拷贝?试图让我的头脑围绕这个浅拷贝与深拷贝。
请您参考如下方法:
没有 Python 操作会进行隐式复制。曾经。就 Python 而言,隐式复制是邪恶的。
它是创建对象的文字。每次调用 setdefault 时,它都会评估其两个参数。当它评估其第二个参数 ([]) 时,将创建一个新列表。它与 a = [] 完全相同。
如果你写 el = [] 然后尝试 .setdefault 将 el 多次写入某个字典,你会看到没有复制。
