簡體   English   中英

更新字典值的字典

[英]Update dict of dict value

我已將B_cells值復制到A詞典中。 我正在嘗試添加新元素A_cell但是它也會影響B_cells

props = {'A_cells': {'t4drc_3': ['Path'],
            'tb4drc_1': ['Path']},

 'B_cells': {'t4drc_3': ['Path'],
             'tb4drc_1': ['Path']}
         }



props_dict['A_cells'] = props_dict['B_cell'].copy()


#Need to append data for A cells only
def append_in_dict_by_option(self, option, data):
        """Adding data in dictionary"""
        for key in props_dict[option].keys():
            self.props_dict[option][key].append(data)

所以我只期望A_cells輸出,但它會影響B_cells 任何想法

{'A_cells': {'t4drc_3': ['Path', data],
                'tb4drc_1': ['Path', data]},

這是因為dict.copy返回dict的淺表副本。 這意味着您將獲得一個新的dict實例,但是dict中的元素相同。

props['A_cells'] is props['B_cells'] #returns False
props['A_cells']['tb4drc_1'] is props['B_cells']['tb4drc_1'] #returns True

因此,如果將值附加到props ['A_cells'] ['tb4drc_1'],則更改將反映在props ['B_cells'] ['tb4drc_1']中-它們畢竟包含相同的列表實例。

更新:

要解決此問題,請更改

props_dict['A_cells'] = props_dict['B_cells'].copy()

from copy import deepcopy
props_dict['A_cells'] = deepcopy(props_dict['B_cells'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM