2016-04-14 16 views
0

のリストを反復処理:私はPythonで、このコードを持っているリストと辞書の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)

もう1つ:問題は関数addDictionary()です。

+0

わかりやすい変数名を使用するようにコードを書き直せますか?すべての変数が1文字または2文字しかないときに何が起こっているのかを理解するのは難しいです。 –

+0

Python 2を使用していますか? – lmiguelvargasf

+0

私はPython 2.7を使用しています – Ravield

答えて

1

この2つの状態とシンボルabため

{'q0': {'a': 'q2', 'b': 'q1'}, 'q1': {'a': '', 'b': 'q2'}} 

def addDictionary(States, Transition, Languaje, Tr): 
    for s, t in zip(States, Tr): 
     Transition[s] = dict(zip(Languaje, t)) 

は、この出力を生成します。

関連する問題