python - 在 python 中将字典与 dfa 库一起使用
问题描述
我正在尝试在 python 中使用“dfa”库(https://pypi.org/project/dfa/和https://github.com/mvcisback/dfa),但我遇到了一些问题。
我正在尝试使用 dict2dfa 函数从字典创建 DFA 对象。
这是您可以在文档中找到的示例:
dfa_dict = {
0: (False, {0: 0, 1: 1}),
1: (False, {0: 1, 1: 2}),
2: (False, {0: 2, 1: 3}),
3: (True, {0: 3, 1: 0})
}
# Dictionary -> DFA
dfa = dict2dfa(dfa_dict, start=0)
我试过了,它可以工作,但如果我改变 DFA 的转换,它就会中断。
例如,如果我将第一行更改为:0: (False, {0: 0}),
删除转换 1:1,它会给我这个错误:
Traceback (most recent call last):
File "/Users/manu/Desktop/Dfas/dfa-test.py", line 23, in <module>
write_dot(dfaa, "./dfa1.dot")
File "/Users/manu/miniforge3/lib/python3.9/site-packages/dfa/draw.py", line 7, in write_dot
dfa_dict, init = dfa.dfa2dict(dfa_)
File "/Users/manu/miniforge3/lib/python3.9/site-packages/dfa/utils.py", line 11, in dfa2dict
dfa_.states() # Explicitly compute states.
File "/Users/manu/miniforge3/lib/python3.9/site-packages/dfa/dfa.py", line 133, in states
successors = [self._transition(curr, a) for a in inputs]
File "/Users/manu/miniforge3/lib/python3.9/site-packages/dfa/dfa.py", line 133, in <listcomp>
successors = [self._transition(curr, a) for a in inputs]
File "/Users/manu/miniforge3/lib/python3.9/site-packages/funcy/calc.py", line 62, in wrapper
value = memory[key] = func(*args, **kwargs)
File "/Users/manu/miniforge3/lib/python3.9/site-packages/dfa/utils.py", line 30, in <lambda>
transition=lambda s, c: dfa_dict[s][1][c],
KeyError: 1
实际上,如果我尝试使用该对象,则会引发错误,例如调用:
print(dfa.states())
解决方案
推荐阅读
- ios - 如何在 SwiftUI 中更改 NavigationView 的背景颜色?
- ios - for循环内的控制语句冲突
- java - 不是声明;预期的
- android - 用户类没有设置器/字段
- python - ENet 语义分割模型不适用于较小的图像
- go - 反射地设置作为 interface{} 传入的结构的字段
- python-docx - 如何使用python-docx将表格中的单元格文本对齐到中心?
- dependencies - 在自定义加载器中访问 Webpack Parent 的依赖项
- jsp - 模态泰语节目中的href链接“????????”
- file-transfer - 如何将文件从 OPC UA 客户端传输到服务器