feature_dict = dict(zip(img_paths, list(vecs.detach().cpu().numpy().T))) TypeError: unhashable type: 'list'
时间: 2024-09-23 14:08:12 浏览: 35
python2.x与python3.x的区别
4星 · 用户满意度95%
这个错误是因为你试图将列表(`list(vecs.detach().cpu().numpy().T)`)作为字典键,然而Python字典的键必须是可哈希(Hashable)的数据类型,而列表不是。当你尝试将不可哈希的对象如列表存储到字典中时,会引发 `TypeError: unhashable type: 'list'`。
在这种情况下,你需要找到一种方法来转换列表使其成为可哈希的。你可以考虑:
1. 使用元组或字符串(如果元素本身可以构成唯一标识符)替换列表,因为元组和字符串都是可哈希的。
2. 如果列表中的内容是可以排序并唯一的,你可以尝试对它们排序后作为新的键。
3. 创建一个新的数据结构,比如集合(set),虽然它不允许有重复元素,但请注意集合是无序的。
例如,如果你确定列表的内容都是唯一的,你可以这样做:
```python
feature_dicts = {tuple(path): vec for path, vec in zip(img_paths, list(vecs.detach().cpu().numpy().T))}
```
这里我们用到了 tuple 来创建一个新的、可哈希的键。
阅读全文