我有一个问题如下:
B = C, D
A = B
C = E
意味着B依赖于变量C和D,而A依赖于B,依此类推。变量E和D是独立的。
输入' A'应该返回:
E, C, D, B, A
列出所有因变量。为了解决这个问题,我首先开始定义一个字典来轻松迭代这个条件:
letter = {'A' : ['B'], 'B' : ['C', 'D'], 'C' : ['E']}
然而,我现在仍然坚持如何循环这个以便有效地打印所有孩子。我认为这是错误的,但我认为我可能会朝着正确的方向前进:
def problem(value):
letter = {'A' : ['B'], 'B' : ['C', 'D'], 'C' : ['E']}
for i in letter:
if i != value:
continue
if len(letter[i]) > 1:
for k in letter:
print("".join(letter[k]), k)
print("".join(letter[i]), i)
请帮忙!
答案 0 :(得分:0)
经过一些快速的谷歌搜索后,http://code.activestate.com/recipes/576570-dependency-resolver/被盗。
def dep(arg):
'''
Dependency resolver
"arg" is a dependency dictionary in which
the values are the dependencies of their respective keys.
'''
d=dict((k, set(arg[k])) for k in arg)
r=[]
while d:
# values not in keys (items without dep)
t=set(i for v in d.values() for i in v)-set(d.keys())
# and keys without value (items without dep)
t.update(k for k, v in d.items() if not v)
# can be done right away
r.append(t)
# and cleaned up
d=dict(((k, v-t) for k, v in d.items() if v))
return r
if __name__=='__main__':
d=dict(
a=('b','c'),
b=('c','d'),
e=(),
f=('c','e'),
g=('h','f'),
i=('f',)
)
print dep(d)
答案 1 :(得分:0)
您有另一个列表中的列表。在另一个for循环内写一个嵌套的for循环,然后通过你的测试逻辑运行它。对于外部列表,迭代内部列表的每个部分,然后移动到外部列表的下一部分。