我正面临着一个非常简单和奇怪的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)
有人能解释我的语法出了什么问题吗?
你的语法很好,但你一遍又一遍地使用相同的列表.由于列表是可变的,所以当你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']))
| 归档时间: |
|
| 查看次数: |
1349 次 |
| 最近记录: |