如何迭代&在字典中搜索?

时间:2012-10-10 06:44:57

标签: python

我构建了一个这样的词典:

目录是:

{((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)])并将其作为键并搜索并查找其值等等......

但我无法为此构建一个函数。我不断得到一个值,它进入无限循环。我想我可能会错误地获取值。有人可以告诉我如何做到这一点吗?

3 个答案:

答案 0 :(得分:1)

以下内容如何:

key = ((2, 1), 'South', 1)
while (x.has_key(key)):
    print x[key]
    key = iter(x[key]).next()

答案 1 :(得分: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)

答案 2 :(得分:-1)

试试这个:

def iterate_get_value(my_dict):
    for k,v in my_dict.iteritems():
        if k == ((2, 1), 'South', 1):
            return v

这对你有用吗?