擅长:python、mysql、java
<p>我不确定这是否是最有效的方法(但是在每一行再次读入文件会更糟)。在</p>
<pre><code>find= 'A' #The child for which the code should find all possible parent relationships
sequences = set(find)
# we'll build up a chain for every relationship, then strip out un-needed ones later
with open('testing.csv','r') as f: #testing.csv = child,parent table (above example)
for row in f:
child, parent = row.strip().split(',')
sequences.add(parent + '|' + child)
for c in sequences.copy():
if c[0] == child:
sequences.add(parent + '|' + c)
# remove any that don't end with our child:
sequences = set(s for s in sequences if s.endswith(find))
# get all shorter chains when we have a longer one
extra = set()
for g1 in sequences:
for g2 in sequences:
if g2[2:] == g1:
extra.add(g1)
# remove the shorter chains
sequences.difference_update(extra)
for chain in sequences:
print(chain)
</code></pre>
<p>结果:</p>
^{pr2}$