python - 将 dict 值设置为自身会创建无限副本

标签 python python-3.x dictionary

最近看到一段代码看不懂。这是示例:

a = {}
a['value'] = a

print(a)
>>>> {'value': {...}}

因此,这会创建无限数量的初始字典副本,类似于:

{
    'value': {
      'value': {
        'value': {
                  ...
        }
      }
    }
}

那么,为什么会这样呢?这是某种递归的东西吗?

最佳答案

您的代码不会复制任何内容。 Python 知道你的变量是递归的,也就是说,它引用自己,并且不会永远打印相同的东西。相反,它通过编写 ... 来打破循环引用。

您可以使用 is 关键字确定 a["value"] 确实不是您字典的副本:

>>> a = {}
>>> a["value"] = a
>>> a["value"] is a # they are the same object
True
>>> 

关于python - 将 dict 值设置为自身会创建无限副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65497847/

相关文章:

python - 使用 dict 替换 pandas 数据框中的字符串时性能很慢

python - 使用 open(),如何判断我是否在文件的最后一行?

python-3.x - 一些提高时间复杂度的建议

python - 选择字典键 :values randomly

python - PyQt - QLabel 继承

python-3.x - Python 3 对象构造 : which is the most Pythonic/the accepted way?

python - 使用 sc.exe 创建作为 Windows 服务运行的 Python 脚本

python - Tkinter 几何恢复正常

r - 在r中的ggplot中添加 map 中心点

python - 如何从 locals() 中删除项目?