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.ndarray‘。我检查了tuple_dict中条目的类型,它们都是元组和字符串。有谁能找到解决办法吗?谢谢。
发布于 2022-05-12 11:39:29
您可以散列您的ndarray,并使用结果作为键在倒排。
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]])https://stackoverflow.com/questions/72214091
复制相似问题