擅长:python、mysql、java
<p>基本上,您希望查看是否可以遍历树;使用<a href="http://docs.python.org/2/library/functions.html#reduce" rel="nofollow">^{<cd1>}</a>循环元素,如果引发<code>KeyError</code>,则路径不存在:</p>
<pre><code>def family_lineage(familytree, lineage):
if not familytree:
return False
try:
reduce(lambda d, k: d[k], lineage, familytree)
return True
except KeyError:
# No match at this level, recurse down the family tree
return any(family_lineage(val, lineage) for val in familytree.itervalues())
</code></pre>
<p><code>reduce()</code>将<code>lambda</code>函数递归地应用于<code>lineage</code>,从<code>familytree</code>开始。在</p>
<p>为了支持在树的更深层次查找沿袭,您需要在<code>KeyError</code>s上向下递归</p>
<p>演示:</p>
^{pr2}$