将值分配给字典的一个键会导致分配所有键? (Python2.7)

时间:2019-06-14 15:15:32

标签: python python-2.7 list dictionary zip

我正在创建一个字典,其中每个键下的值是一个列表。我需要迭代地将值添加到每个键下的列表中。因此,我使用了extend()函数将值添加到循环中的列表中。但是发生了意外的行为。如果我以以下方式创建字典,则在一个键下扩展列表会导致在所有键下扩展列表:

dummy_list = ['A', 'B', 'C']
dummy_dict = dict(zip(dummy_list, [[]] * len(dummy_list)))
dummy_list

['A','B',C']

dummy_dict

{'A':[],'B':[],'C':[]}

dummy_dict['A'].extend(['a','b','c'])
dummy_dict

{'A':['a','b','c'],'B':['a','b','c'],'C':['a',' b','c']}

另一方面,如果我通过显式列出列表来创建字典,而不是使用乘法,则该行为是预期的:

dummy_list = ['A', 'B', 'C']
dummy_dict = dict(zip(dummy_list, [[], [], []]))
dummy_list

['A','B',C']

dummy_dict

{'A':[],'B':[],'C':[]}

dummy_dict['A'].extend(['a','b','c'])
dummy_dict

{'A':['a','b','c'],'B':[],'C':[]}

有人可以帮助我理解为什么吗?谢谢!

0 个答案:

没有答案