迭代列表和字典python列表

时间:2016-04-14 04:46:59

标签: python list dictionary

我在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然后ab,因为我只想用一个代码来证明我的代码2x2的列表。稍后我将更改为nxm列表。 (对不起我的“中等”英语技能:V)

还有一件事:问题在于函数addDictionary()

1 个答案:

答案 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'}}

表示两种状态和符号ab