python - 理解 Python 中的 setdefault

标签 python

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

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

返回

{'key': ['item']}

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

最佳答案

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

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

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

关于python - 理解 Python 中的 setdefault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32168922/

相关文章:

python - 多标签数据的计数图

python - 如何正确关闭Python exe控制台程序

python - 在没有模板渲染的情况下使用 django 提供 html 文件?

Python 多处理比单处理慢

python - Python 单元测试在哪里?

python - 使用python将带逗号的文本写入CSV文件中的单元格

python - 我的计算机上的 Python 是用什么版本的 Visual Studio 编译的?

python - Pandas 将正数转换为 1,将负数转换为 -1

python - pymongo 数据库的 insert() 和 insert_one() 方法都不能调用“Collection”对象

python - 函数调用之外的星号