该问题已经过修订,以实现评论中的建议,简化并希望减少混乱。
我有一本字典,试图通过它迭代和替换值。其中一些值是列表,应该用浮点数代替。
我试图弄清楚为什么未将此字典中的值重新分配给1.0
test_data = {
"Apple": [1, 2],
"Pear": 3.4,
"Cherry": [5, 6]
}
for key, value in test_data.items():
test_data[value] = 1.0
print(test_data)
我得到TypeError: unhashable type: 'list'
我不知道为什么要尝试对其进行散列而不是重新分配value
。
答案 0 :(得分:1)
这是一些python基础知识,在docs中有很好的解释(另请参阅关于view objects的页面),而Google搜索python dictionary
将为您提供大量示例。
但是,我认为您想执行以下操作:
In [29]: test_data = {
...: "Apple": [1, 2],
...: "Pear": 3.4,
...: "Cherry": [5, 6]
...: }
...:
...: for k in test_data.keys():
...: test_data[k] = 1.0
...:
In [30]: test_data
Out[30]: {'Apple': 1.0, 'Pear': 1.0, 'Cherry': 1.0}
首先,您实际上并没有对值做任何事情,因此您可以简单地遍历键。拥有密钥后,可以将test_data[k]
重新分配给所需的任何值。