You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qiskit v2.0.0中Statevector probabilities_dict抛出TypeError问题求助

问题排查与解决方案

错误原因分析

这个TypeError的核心是代码中存在将Qubit对象与整数做减法运算的错误写法,和probabilities_dict调用本身无关——Qiskit 2.0中probabilities_dict(qargs=[Qubit实例])的用法是合规的,问题出在量子减法器的电路构建逻辑里。

具体排查步骤

  • 检查减法器实现代码中所有涉及qubit操作的部分,比如控制位、目标位的引用,有没有类似flag[0] - 1、qubit - 0这种无意义的运算(把Qubit对象当成整数处理了)。
  • 确认flag寄存器的定义:如果是用QuantumRegister创建的(比如flag = QuantumRegister(1, 'flag')),flag[0]是Qubit实例,确保所有使用它的地方没有混淆“Qubit对象”和“整数索引”。
  • 排查compose/append拼接减法器子电路时的参数:比如有没有在qubits映射列表里混入Qubit对象+整数运算的写法,比如compose(sub_circuit, qubits=[qr[0], flag[0]-1])这种错误。
  • 验证基础流程:用最小测试代码确认probabilities_dict的调用逻辑没问题,比如:
    from qiskit import QuantumCircuit, QuantumRegister
    from qiskit_aer import AerSimulator
    
    flag = QuantumRegister(1, 'flag')
    qc = QuantumCircuit(flag)
    qc.x(flag[0])
    
    sv = AerSimulator(method='statevector')
    result = sv.run(qc).result()
    probs = result.probabilities_dict(qargs=[flag[0]])
    print(probs)
    
    如果这段代码能正常运行,说明问题完全集中在减法器的具体实现逻辑中。

常见修复示例

如果你的减法器代码里有类似这样的错误:

# 错误写法:把Qubit对象和整数运算
target_qubit = flag[0] - 0
qc.cx(control_qubit, target_qubit)

改成直接引用Qubit实例:

# 正确写法
target_qubit = flag[0]
qc.cx(control_qubit, target_qubit)

如果是拼接电路时的映射错误:

# 错误写法:映射列表中混入运算
main_circuit.compose(subtractor, qubits=[a_qubit, b_qubit, flag[0]-1])

改成传递正确的Qubit实例或整数索引:

# 正确写法:直接传递Qubit对象
main_circuit.compose(subtractor, qubits=[a_qubit, b_qubit, flag[0]])

内容的提问来源于stack exchange,提问作者Alex F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:24:57