<p>这里有一个解决方案,适用于任何数量的球员和球队。它随机洗牌玩家列表,按经验排序,然后循环分配玩家到可用的团队:</p>
<pre><code>#!python3
import csv
import random
import itertools
import operator
from collections import namedtuple
Team = namedtuple('Team','name players')
teams = Team('Raptors',[]), Team('Dragons',[]), Team('Sharks',[])
with open('soccer_players.csv', newline='') as csvfile:
players = list(csv.DictReader(csvfile))
random.shuffle(players)
players.sort(key=operator.itemgetter('Soccer Experience'))
iteam = itertools.cycle(teams)
for player in players:
next(iteam).players.append(player)
with open('teams.txt', 'w') as target:
for team in teams:
target.write(team.name + '\n')
for player in team.players:
target.write('{Name}, {Soccer Experience}, {Guardian Name(s)}\n'.format(**player))
target.write('\n')
</code></pre>
<p>输入文件(不是很原始,但没有提供):</p>
<pre><code>Name,Height (inches),Soccer Experience,Guardian Name(s)
A,40,YES,aaa
B,40,YES,bbb
C,40,YES,ccc
D,40,YES,ddd
E,40,YES,eee
F,40,YES,fff
G,40,YES,ggg
H,40,YES,hhh
I,40,YES,iii
J,40,NO,jjj
K,40,NO,kkk
L,40,NO,lll
M,40,NO,mmm
N,40,NO,nnn
O,40,NO,ooo
P,40,NO,ppp
Q,40,NO,qqq
R,40,NO,rrr
</code></pre>
<p>输出文件:</p>
<pre><code>Raptors
M, NO, mmm
O, NO, ooo
J, NO, jjj
A, YES, aaa
H, YES, hhh
B, YES, bbb
Dragons
L, NO, lll
N, NO, nnn
P, NO, ppp
C, YES, ccc
I, YES, iii
E, YES, eee
Sharks
R, NO, rrr
Q, NO, qqq
K, NO, kkk
G, YES, ggg
D, YES, ddd
F, YES, fff
</code></pre>