问题
我正在创建一个字典,其中值为空列表,方式如下。
>>> words = dict.fromkeys(['coach', 'we', 'be'], [])
这本字典长成这样。
>>> words
{'coach': [], 'be': [], 'we': []}
当我向一个列表中添加一个值时,像这个例子一样,该值会被附加到所有的列表中。
>>> words['coach'].append('test')
{'coach': ['test'], 'be': ['test'], 'we': ['test']}
问题
我的问题有两个部分。第一,为什么会发生这种情况?第二,我该怎么做才能解决它?也就是说,怎样才能向仅一个列表附加值?
我猜想在创建字典时,我让所有的列表指向同一个对象。但我不明白为什么会这样,因为当我在字典创建中输入0
而不是[]
,然后添加值而不是附加它们时,这些值的行为是不同的,就好像它们指向不同的对象一样。
我会感激任何意见。提前谢谢您!