字典值不会被替换。 TypeError:无法散列的类型:“列表”

时间:2020-11-10 08:43:48

标签: python list dictionary types iteration

该问题已经过修订,以实现评论中的建议,简化并希望减少混乱。

我有一本字典,试图通过它迭代和替换值。其中一些值是列表,应该用浮点数代替。

我试图弄清楚为什么未将此字典中的值重新分配给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

1 个答案:

答案 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]重新分配给所需的任何值。