search_graph = { 's': ['a', 'd'], 'a': ['b', 'c', 's'], 'b': ['a'], 'c': ['a'], 'd': ['e', 'h', 's'], 'e': ['f', 'g', 'd'], 'f': ['e'], 'g': ['e'], 'h': ['i', 'j', 'd'], 'i': ['h'], 'j': ['h'], } open_list = ['s',] closed_list = [] while open_list: print open_list n = open_list.pop() #print n, closed_list.append(n) for m in search_graph[n]: if m not in closed_list: open_list.append(m)