python - 克利福德图书馆 : Blade indexing causing key error

标签 python libraries keyerror

我对 Python 还很陌生,正在尝试使用我在网上找到的一些代码来完成本科物理项目。该代码包含克利福德库,这导致了我的问题。考虑到代码的语法以及我使用 pip3 安装它的事实,它应该是 Python 3。

运行此代码后:

from __future__ import division
import numpy
from clifford import *
layout, blades = Cl(3,0)
e0, e1, e2 = [blades['e%i'%k] for k in range(3)]
I = (e0^e1^e2)

我得到以下回溯:

Traceback (most recent call last):
  File "/Users/melissa/Documents/Fodje.py", line 5, in <module>
    e0, e1, e2 = [blades['e%i'%k] for k in range(3)]
  File "/Users/melissa/Documents/Fodje.py", line 5, in <listcomp>
    e0, e1, e2 = [blades['e%i'%k] for k in range(3)]
KeyError: 'e0'

我问了我的计算机科学教授,他说 blades 中的索引可能存在问题。

有人可以帮我解决这个问题吗?谢谢!

完整代码为here Clifford 文档是 here .

最佳答案

这里的问题是字典对象 blades 包含键 e1、e2、e3 等。 range() 函数从 0 开始,因此 range(3) 本质上返回列表 [0,1,2] - (实际上一个 ittator 不是一个列表,但你不需要担心这一点)。

您收到 key 错误的原因是,python 正在 Blade 中查找 key e0,但它不存在。将 k 替换为 k+1 应该可以工作。

e.g.e1, e2, e3 = [blades['e%i'%(k+1)] for k in range(3)]

一般来说,如果您尝试自行排除故障,关键错误意味着您尝试查找不存在的内容。所以一个好主意可能是打印该对象。因此,为了诊断这里出了什么问题,我只是做了print(blades),结果就很清楚了。我希望这会有所帮助。

完整的代码是:

from __future__ import division
import numpy
from clifford import *
layout, blades = Cl(3,0)
e1, e2, e3 = [blades['e%i'%(k+1)] for k in range(3)]
I = (e1^e2^e3)

关于python - 克利福德图书馆 : Blade indexing causing key error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47598352/

相关文章:

python - flask 上的弹头场

python - 从 ftp 下载第二个文件失败

java - 导入库后找不到主类

python - 如何处理空字典值

python - Pandas 中令人困惑的关键错误

python - 如何将存储为txt的列表导入pandas?

python - MultiGPU Kmeans 聚类与 RAPIDs 卡住

python - conda安装boost后,libboost_python.lib和boost_python.lib有什么区别

c++ - 在 Visual Studio 中使用图书管理员包含 .pdb 文件

python - 如何使用 gensim 处理 KeyError(f"Key '{key}' not present") wor2vec