我有一个nts的dicts字典,想要通过一系列键来获取叶子值。
所以:
example_dict = {'level_one':
{'level_two_a':
{'level_three_a':[1,2,3],
'level_three_b':[4,5,6]
},
'level_two_b':
{'level_three_c':[7,8,9],
'level_three_d':[10,11,12]
}
}
}
有时我会想查询:
example_dict['level_one']['level_two_a']['level_three_a']
我需要的其他时间:
example_dict['level_one']['level_two_b']
真正嵌套的dict非常大,所以我想避免像:
result_dict = copy.deepcopy(example_dict)
search_key = ['level_one', 'level_two_a']
for term in search_key:
result_dict = copy.deepcopy(result_dict[term])
是否有更高效的内存方法?
答案 0 :(得分:1)
是的,不要创建这么多副本。只需参考子句:
result = example_dict
search_key = ['level_one', 'level_two_a']
for term in search_key:
result = result[term]
只要你不改变result
字典,制作副本毫无意义。由于您丢弃了以前的副本并在每次迭代时创建了一个新副本,因此浪费了CPU时间和内存。
即使您必须修改result
并且不希望这些更改影响example_dict
,您也只需要在循环后复制最终的result
值。