我有一个订单清单:
id, dependency_id
1, 2
1, 3
3, 4
5, 2
3, 6
我必须输出如下内容:
Id: 1, Name: Order 1
Dependencies
Id: 2, Name: Order 2
Id: 3, Name: Order 3
Dependencies
Id: 4, Name: Order 4
Id: 6, Name: Order 6
Id: 5, Name: Order 5
Dependencies
Id: 2, Name: Order 2
我应该使用哪种递归算法?我被困
这是我到目前为止所拥有的:
dependencies = {}
def read():
f = open("dependencies.txt", "r")
# contents = f.read() #reads the whole file
#print(contents) #prints everything
#print(contents[0]) #prints first letter
lines = f.readlines()
for i in range(1, len(lines)):
dep = lines[i].split(",")
dep[1] = dep[1].rstrip()
try:
depList = dependencies.get(dep[0], [])
depList.append(dep[1])
dependencies[dep[0]] = depList
except:
dependencies[dep[0]] = [dep[1]]
if __name__ == "__main__":
read()
这将返回:{'1':['2','3'],'3':['4','6'],'5':['2']}
答案 0 :(得分:0)
您可以执行以下操作;
#-*- coding:utf-8 -*-
table = [(1, 2), (1, 3), (3, 4), (5, 2), (3, 6)]
deps = {}
for k, d in table:
if k not in deps:
deps[k] = {}
if d not in deps:
deps[d] = {}
deps[k][d] = True
deps[d][k] = True
def p(a, d, stack):
print "%sId: %d, Name: Order %d" % (d * " ", a, a)
stack.append(a)
for b, v in deps[a].iteritems():
if not b in stack:
print (d*" ") + " Dependencies"
p(b, d+1, stack)
for k, d in table:
p(k, 0, [])