我在Python中有这个代码:
from pprint import pprint
def addDictionary(States,Transition,Languaje,Tr):
for s in States :
D = {}
Transition[s] = D # this create {"state1":{"symbol1":}}
for l in Languaje:
for i in range(len(Tr)):
D[l] = Tr[i][0]
def addStates(States):
cant = int(raw_input("how many states?: "))
for i in range(cant):
c = "q"+str(i)
States.append(c)
def addLan(Languaje):
c = int(raw_input("how many symbols?: "))
for j in range(c):
l = raw_input("symbol: ")
Languaje.append(l)
if __name__ == "__main__":
States=[]
Languaje=[]
Transition={} #{"state":{"symbol1":"transition value","symbol2":"transition value"}}
Tr=[["q2","q1"],["","q2"]] #transition values
addStates(States)
addLan(Languaje)
addDictionary(States,Transition,Languaje,Tr)
pprint(Transition)
这是输出:
{'q0': {'a': '', 'b': ''}, 'q1': {'a': '', 'b': ''}}
我想要的是这样的:
{'q0': {'a': 'q2', 'b': 'q1'}, 'q1': {'a': '', 'b': 'q2'}}
我想将列表Tr
的值放在我的字典中。
这只是一个示例代码。我想实现我为大学课程开发的确定性有限自动机
我忘了提及要证明代码首先输入2
,然后2
然后a
和b
,因为我只想用一个代码来证明我的代码2x2的列表。稍后我将更改为nxm列表。 (对不起我的“中等”英语技能:V)
还有一件事:问题在于函数addDictionary()
。
答案 0 :(得分:1)
此:
def addDictionary(States, Transition, Languaje, Tr):
for s, t in zip(States, Tr):
Transition[s] = dict(zip(Languaje, t))
生成此输出:
{'q0': {'a': 'q2', 'b': 'q1'}, 'q1': {'a': '', 'b': 'q2'}}
表示两种状态和符号a
和b
。