修復 Python 中的 Unhashable Type numpy.ndarray 錯誤
Vaibhav Vaibhav
2022年5月18日
Python 字典是一種健壯且可擴充套件的資料結構,它以鍵值對的形式儲存資料。在鍵值對中,唯一的鍵指向某個值,並且對值是什麼沒有限制。值可以是整數、浮點數、布林值、數字列表、類物件、類物件列表、元組、字典等等。然而,金鑰的含義有一些限制。
金鑰的基本條件是它應該是一個可雜湊的物件。可雜湊物件是指一旦定義,在其生命週期內不能進一步修改或不可變的物件,可以用唯一的雜湊值表示。雜湊值是唯一的整數值。
int
、float
、str
、tuple
等資料型別和類物件是不可變物件。這意味著它們可以安全地用作字典中的鍵。當我們不特別關注鍵的資料型別時,就會出現問題。例如,如果我們嘗試使用 list
或 numpy.ndarray
作為鍵,我們將遇到 TypeError: unhashable type: 'list'
和 TypeError: unhashable type: 'numpy.ndarray'
分別錯誤。
在本文中,我們將學習如何避免 NumPy 陣列出現此錯誤。
修復 Python 中的 unhashable type numpy.ndarray
錯誤
我們必須將 NumPy 陣列轉換為可以安全地用作修復此錯誤的關鍵的資料型別。而且,在陣列和列表的情況下,元組是要走的路。請參閱以下 Python 程式碼。
import numpy as np
dictionary = {}
n = np.array([1.234, 21.33, 3.413, 4.4, 15.0000])
n = tuple(n) # Conversion
dictionary[n] = "Hello World"
print(dictionary)
輸出:
{(1.234, 21.33, 3.413, 4.4, 15.0): 'Hello World'}
Python 的內建 tuple()
方法將為可迭代物件執行必要的轉換。
Author: Vaibhav Vaibhav