我有一个类似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。在
我找不到任何理由来抄字典或单子。你没有更新任何一个。你只是从中提取数据。所以只要在递归函数中传递引用。在
相关问题 更多 >
编程相关推荐