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