Python:如何在dict中扩展列表存储的内容?

Gui*_*not 0 python dictionary

我正面临着一个非常简单和奇怪的Python问题.

我有一个带有几个键的字典,其中包含空列表.我想追加/扩展特定键列表的内容.因此我认为的代码看起来像这样

d = dict.fromkeys(['A','B','C'],[])
d['A'].append('Hello')
Run Code Online (Sandbox Code Playgroud)

但是,结果并不是我所期望的.每个键的值是一个包含一个元素的列表:'Hello'

>>> d
{'A': ['Hello'], 'C': ['Hello'], 'B': ['Hello']}
Run Code Online (Sandbox Code Playgroud)

如果我尝试下面的内容,它会产生同样的结果

d.get('A').append('Bye')
Run Code Online (Sandbox Code Playgroud)

我必须做什么操作才能获得这个?

>>> d
{'A': ['Hello'], 'C': [], 'B': []}
Run Code Online (Sandbox Code Playgroud)

有人能解释我的语法出了什么问题吗?

koj*_*iro 5

你的语法很好,但你一遍又一遍地使用相同的列表.由于列表是可变的,所以当你append在同一个列表中添加"Hello"时,它恰好在三个地方被引用.您可能想要做的是更多地手动创建dict:

d = {k:[] for k in ['A', 'B', 'C']}
Run Code Online (Sandbox Code Playgroud)

(以上是Python 2.7版或更高版本,老的Python,您可以使用.dict((k,[]) for k in ['A', 'B', 'C']))