gpt4 book ai didi

python - 我如何检查字典中的循环/后边? {...}

转载 作者:太空狗 更新时间:2023-10-29 22:28:46 26 4
gpt4 key购买 nike

我如何检测字典是否包含 back-edge 又名 back-reference 可能会导致无限循环或导致 最大递归深度异常。

x = {'a':1}           
x['b'] = x #referencing same dict, creating back edge
print(x)
>{'a': 1, 'b': {...}}

显然 python 足够聪明,可以找出 back-edges 并通过将它们打印为 {...} 来标记它们。有没有一种方法可以访问此信息,以便可以跳过它,而无需检查所有元素的 id?

最佳答案

dict.__repr__ implementation电话 Py_ReprEnter , reprlib.recursive_repr 的 C API 模拟, 它记录了当前线程正在计算字典的 repr 这一事实。如果在没有插入 Py_ReprLeave 的情况下再次为该字典输入 dict.__repr__,Python 知道它处于递归 repr 调用中,并且它使用 '{...}' 而不是通过通常的逻辑。

您可以在自己的代码中应用类似的技术。在您要编写的任何递归遍历中,记录当前线程当前正在处理的对象,并使用该信息来检测何时遇到循环。根据您尝试执行的操作和输入的结构,可能还有其他有用的技术。

关于python - 我如何检查字典中的循环/后边? {...},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48218271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com