Python可变对象以及何时复制它们

2024-06-20 15:15:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似json的字典,它包含了其他字典和如下列表:

        "A": {
            "attrib2": "bar", 
            "attrib1": "foo", 
            "B": "b", 
            "C": [
                "c1", 
                "c2"
            ], 
            "D": [
                {
                    "attrib3": "baz"
                }, 
                {
                    "attrib4": "muh"
                }
            ]
        }

每个值可以是一个列表(由指令或值组成)、字典或不可变值(如“c1”或“5”)。在

现在我想搜索特定的值,这些值是通过访问它们所需的键来引用的([“A”,“B”]将指向值“B”)。因为在给定的键路径中可能有列表,所以我返回所有找到的值。我的功能如下:

^{pr2}$

如您所见,我对这里使用的可变对象有点偏执。我正在复制剩下来查找正确值的键列表以及每次使用的字典。我的函数按预期工作,但我认为我不必要地复制所有这些对象,从而造成了巨大的开销。在

在这个例子中,什么时候可以省去复制字典和列表?为什么?试错是没有选择的,因为我没有所有可能的输入字典,也因为我想获得更好的理解。我应该补充一点,我已经阅读了很多python中可变对象的例子和解释,尽管我认为我理解了这个概念,但我还是觉得不太舒服,因为其他人依赖于这段代码的正确性。在

^{3}$

我使用的是python2.7。在


Tags: 对象json列表字典foobarbaz例子