python-3.x KeyError:0问题,是否有修复方法?

xqkwcwgp  于 2023-01-27  发布在  Python
关注(0)|答案(1)|浏览(175)

我是量子编码的新手,我不断地在我的代码中得到这个错误。

  1. ***hamiltonian = second_q_ops[0]***
  2. converter = QubitConverter(mapper,two_qubit_reduction=True)
  3. reducer = TwoQubitReduction(num_particles)
  4. qubit_op = converter.convert(hamiltonian)
  5. qubit_op = reducer.convert(qubit_op)
  6. return qubit_op, num_particles, num_spin_orbitals, problem, converter
  7. def exact_solver(problem, converter):
  8. solver = NumPyMinimumEigensolverFactory()
  9. calc = GroundStateEigensolver(converter, solver)
  10. return result
  11. backend = BasicAer.get_backend("statevector_simulator")
  12. distances = np.arange(0.5, 4.0, 0.2)
  13. exact_energies = []
  14. vqe_energies = []
  15. optimizer = SLSQP(maxiter=5)
  16. for dist in distances:
  17. (qubit_op, num_particles, num_spin_orbitals,
  18. ***problem, converter) = get_qubit_op(dist)***
  19. result = exact_solver(problem,converter)
  20. exact_energies.append(result.total_energies[0].real)
  21. init_state = HartreeFock(num_spin_orbitals, num_particles, converter)
  22. var_form = UCCSD(converter, `your text`
  23. num_particles,
  24. num_spin_orbitals,
  25. initial_state=init_state)
  26. vqe = VQE(var_form, optimizer, quantum_instance=backend)
  27. vqe_calc = vqe.compute_minimum_eigenvalue(qubit_op)
  28. vqe_result = problem.interpret(vqe_calc).total_energies[0].real
  29. vqe_energies.append(vqe_result)
  30. print(f"Interatomic Distance: {np.round(dist, 2)}",
  31. f"VQE Result: {vqe_result:.5f}",
  32. f"Exact Energy: {exact_energies[-1]:.5f}")
  33. print("All energies have been calculated")
  34. plt.plot(distances, exact_energies, label="Exact Energy")
  35. plt.plot(distances, vqe_energies, label="VQE Energy")
  36. plt.xlabel('Atomic distance (Angstrom)')
  37. plt.ylabel('Energy')
  38. plt.legend()
  39. plt.show()
  1. The problem is in bold.it says:
  2. Traceback (most recent call last):
  3. Input In [8] in <cell line: 132>
  4. problem, converter) = get_qubit_op(dist)
  5. Input In [8] in get_qubit_op
  6. hamiltonian = second_q_ops[0]
  7. KeyError: 0

有人能帮助我吗?谢谢完整的脚本在这个链接. Quantum code
我尝试将错误的这两个部分中的变量更改为0,但它给了我KeyError:我也试着把数字换成不同的东西,但是没有用。

iyfamqjs

iyfamqjs1#

该错误是由于qiskit_nature中的接口更改造成的,其中aux_operators现在作为字典而不是列表返回。
通过在脚本顶部添加以下两行,可以临时切换回旧行为:

  1. from qiskit_nature.settings import settings
  2. settings.dict_aux_operators = False

从长远来看,您应该将代码迁移到更新的接口。

相关问题