2

次のような辞書を作成しました。

ディレクトリは次のとおりです。

{((2, 1), 'South', 1): set([((2, 2), 'South', 1)]), 
((1, 3), 'South', 1): set([((1, 4), 'South', 1)]), 
((5, 3), 'East', 1): set([((4, 3), 'North', 1)]), 
((2, 2), 'South', 1): set([((2, 3), 'East', 1)]),   
((4, 2), 'East', 1): set([((3, 2), 'East', 1)]), 
((1, 1), 'West', 1): set([((2, 1), 'South', 1)])}

この辞書を次のように繰り返し処理したい:

キーとして持っている場合は、その値を抽出してこれをキーとして取得し、その値を検索して見つけ((2, 1), 'South', 1)たいと思います...set([((2,2),'South',1)])

しかし、同じ関数を構築することはできません。値を 1 つだけ取得し続け、無限ループに陥ります。値を間違って取得している可能性があると思います。誰かが私にこれを行う方法を教えてもらえますか?

4

3 に答える 3

1

以下はどうでしょう。

key = ((2, 1), 'South', 1)
while (x.has_key(key)):
    print x[key]
    key = iter(x[key]).next()
于 2012-10-10T07:01:32.533 に答える
0

私が理解しているように、あなたが必要とするもの。これを試して:

start_pos = ((2, 1), 'South', 1)

d = {...}

visited = set()

def go(pos):
   visited.add(pos)
   for v in d[pos]:
       if v not in visited:
           go(v)

go(start_pos)
于 2012-10-10T06:56:27.637 に答える