我通过循环构建嵌套字典的字典,如下所示:
statistics = {'kpi_0': 0, 'kpi_1': 0}
my_dict = {'0':statistics, '1': statistics, ... }
当然,如果我修改一个元素my_dict['0']['kpi_0'] += 1
,我会影响my_dict
的所有元素。
有一种简单的方法可以避免这种行为吗?例如,我可以保存my_dict
的文字版本并构建new_dict = dict("""literal version of my_dict""")
吗?
答案 0 :(得分:5)
使用deepcopy
:
>>> from copy import deepcopy
>>> statistics = {'kpi_0': 0, 'kpi_1': 1}
>>> my_dict = {'0': deepcopy(statistics), '1': deepcopy(statistics)}
>>> my_dict
{'1': {'kpi_1': 1, 'kpi_0': 0}, '0': {'kpi_1': 1, 'kpi_0': 0}}
>>> my_dict['1']['kpi_0'] += 1
>>> my_dict
{'1': {'kpi_1': 1, 'kpi_0': 1}, '0': {'kpi_1': 1, 'kpi_0': 0}}
请记住,您不能在字典中使用2个具有相同名称的键。