我遇到了一个错误:
psi_out_norm.append(np.sqrt(sorted_probs))
TypeError: loop of ufunc does not support argument 0 of type dict which has no callable sqrt method
不知道如何解决此错误。下面是我正在处理的代码:
num_qubits = 2
sorted_probs = {'00': 0.1826131640519985, '01': 0.3015290853531944, '10': 0.3171301575715357, '11': 0.1987275930232714}
all_possible_keys = [format(i, f'0{num_qubits}b') for i in range(2**num_qubits)]
psi_out_norm = []
for key in all_possible_keys:
count = sorted_probs.get(key, 0) # use 0 is the key is missing
psi_out_norm.append(np.sqrt(sorted_probs))
如果有人可以帮助我解决这个错误,那将会有很大的帮助。
错误在于尝试对字典
sorted_probs
进行
np.sqrt
运算,而不是对字典中的值进行运算。
需要将
np.sqrt
应用于从字典中提取的
值
,而不是字典本身。
以下是修正后的代码:
import numpy as np
num_qubits = 2
sorted_probs = {'00': 0.1826131640519985, '01': 0.3015290853531944, '10': 0.3171301575715357, '11': 0.1987275930232714}
all_possible_keys = [format(i, f'0{num_qubits}b') for i in range(2**num_qubits)]
psi_out_norm = []
for key in all_possible_keys:
count = sorted_probs.get(key, 0) # use 0 is the key is missing
psi_out_norm.append(np.sqrt(count)) # 计算 count 的平方根,而不是 sorted_probs
print(psi_out_norm)
这段代码将
np.sqrt
应用于
count
变量,该变量保存从字典中提取的值。这将解决
TypeError
并生成预期的输出。