operations_dict = {
"identity": np.array([[1, 0], [0, 1]]),
"sigma_1": np.array([[1, -1], [0, -1]]),
"sigma_2": np.array([[-1, 0], [-1, 1]]),
"sigma_3": np.array([[0, 1], [1, 0]]),
"C3": np.array([[-1, 1], [-1, 0]]),
"C3-2": np.array([[0, -1], [1, -1]])}
tuple_dict = {k: tuple(v) for k, v in operations_dict.items()}
inv_tuple_dict = {v: k for k, v in tuple_dict.items()}
我正在编写一个包含数组的字典。因为数组不可哈希,所以我将它们转换为元组。但是,当尝试反转这个字典以便我可以使用这些值作为键来获取键时,我得到了一个错误。类型错误:不可哈希类型:'numpy. narray '。我检查了tuple_dict中条目的类型,都是元组和字符串。有人有解决办法吗?谢谢你。
可以对数组进行散列,并将结果用作倒字典中的键。
tuple_dict = {k: hash(v.tobytes()) for k, v in operations_dict.items()}
您需要保存哈希结果以便能够访问反向字典。
operations_dict = {
"identity": np.array([[1, 0], [0, 1]]),
"sigma_1": np.array([[1, -1], [0, -1]]),
"sigma_2": np.array([[-1, 0], [-1, 1]]),
"sigma_3": np.array([[0, 1], [1, 0]]),
"C3": np.array([[-1, 1], [-1, 0]]),
"C3-2": np.array([[0, -1], [1, -1]])}
tuple_dict = {k: hash(v.tobytes()) for k, v in operations_dict.items()}
hashes = list(tuple_dict.values())
inv_tuple_dict = {v: k for k, v in tuple_dict.items()}
print(inv_tuple_dict[hashes[0]])