擅长:python、mysql、java
<p>您可以构建一个dict,将每个胜利者映射到一个失败者列表,遍历dict的键/胜利者,使用一个生成器函数递归地生成胜利者的失败者,并输出结果的胜利者/失败者对:</p>
<pre><code>import csv
def find_losers(winner, results):
for loser in results.get(winner, ()):
yield loser
for child in find_losers(loser, results):
yield child
with open('output.csv', 'w') as f1, open('input.csv') as f2:
reader = csv.reader(f2)
writer = csv.writer(f1)
writer.writerow(next(reader))
results = {}
for winner, loser in reader:
results.setdefault(winner, []).append(loser)
for winner in results:
for loser in find_losers(winner, results):
writer.writerow((winner, loser))
</code></pre>
<p>对于示例输入,输出文件将包含:</p>
<pre><code>Winners,Losers
John,Amanda
John,Chad
John,Brandon
John,Dirk
Mark,Eddy
Mark,Fred
Mark,Charlie
Amanda,Chad
Amanda,Brandon
Amanda,Dirk
Becky,Michael
Becky,Steve
Becky,Stuart
Becky,Buzz
Michael,Steve
Michael,Stuart
Michael,Buzz
Eddy,Fred
Edwardo,Patricia
Brandon,Dirk
</code></pre>