我尝试以编程方式创建列表字典,但无法单独寻址字典键。每当我创建列表字典并尝试附加到一个键时,所有这些都会更新。这是一个非常简单的测试用例:
data = {}
data = data.fromkeys(range(2),[])
data[1].append('hello')
print data
实际结果:{0: ['hello'], 1: ['hello']}
预期结果:{0: [], 1: ['hello']}
这是有效的
data = {0:[],1:[]}
data[1].append('hello')
print data
实际结果和预期结果:{0: [], 1: ['hello']}
为什么 fromkeys
方法没有按预期工作?
最佳答案
当[]
作为第二个参数传递给dict.fromkeys()
时,生成的dict
中的所有值都将是< em>相同列表
对象。
在 Python 2.7 或更高版本中,使用 dict comprehension相反:
data = {k: [] for k in range(2)}
在早期版本的 Python 中,没有字典理解,但可以将列表理解传递给 dict
构造函数:
data = dict([(k, []) for k in range(2)])
在 2.4-2.6 中,还可以将生成器表达式传递给 dict
以及周围的括号 can be dropped :
data = dict((k, []) for k in range(2))
关于python - 如何在 Python 中初始化空列表字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59362960/