0

More than 1 year has passed since last update.

# 総当たり戦の結果表から、各playerの勝ち負けを集計したい（pythonで）

Posted at

（W:Win, L:Lose, D:draw）

test.csv
``````player1,-,L,L,W,L,L,L,W,L,W,W,
player2,W,-,W,W,L,L,L,W,L,L,W,
player3,W,L,-,W,L,L,W,L,L,W,W,
player4,L,L,L,-,W,W,L,L,L,L,W,
player5,W,W,W,L,-,D,L,L,L,W,W,
player6,W,W,W,L,D,-,L,L,W,L,W,
player7,W,W,L,W,W,W,-,L,L,L,W,
player8,L,L,W,W,W,W,W,-,D,W,W,
player9,W,W,W,W,W,L,W,D,-,W,W,
player10,L,W,L,W,L,W,W,L,L,-,W,
player11,L,L,L,L,L,L,L,L,L,L,-,
``````

``````Player,W,L,D
player9,8,1,1
player8,7,2,1
player7,6,4,0
player2,5,5,0
player3,5,5,0
player10,5,5,0
player5,5,4,1
player6,5,4,1
player1,4,6,0
player4,3,7,0
player11,0,10,0
``````

これを処理するには以下のようなスクリプトを実行すればOK

test.py
``````import sys

ll=[]
# 入力
A=list(map(str, line.split(',')))
ll.append(A)

# count
l_out=[]
for l in ll:
PLAYER=l[0]
W_NUM=l[1:].count('W')
L_NUM=l[1:].count('L')
D_NUM=l[1:].count('D')
l_out.append([PLAYER,W_NUM,L_NUM,D_NUM])

# sort
l_out.sort(key=lambda val: val[3], reverse=True)
l_out.sort(key=lambda val: val[2], reverse=True)
l_out.sort(key=lambda val: val[1], reverse=True)

print("Player,W,L,D")
for l in l_out:
print(*l, sep=',')
``````

``````\$ cat test.csv | python3 test.py
Player,W,L,D
player9,8,1,1
player8,7,2,1
player7,6,4,0
player2,5,5,0
player3,5,5,0
player10,5,5,0
player5,5,4,1
player6,5,4,1
player1,4,6,0
player4,3,7,0
player11,0,10,0
``````

markdownの表に変換したい場合は以下の通り

``````\$ cat test.csv | python3 test.py | csvtomd
``````
Player W L D
player9 8 1 1
player8 7 2 1
player7 6 4 0
player2 5 5 0
player3 5 5 0
player10 5 5 0
player5 5 4 1
player6 5 4 1
player1 4 6 0
player4 3 7 0
player11 0 10 0

# 参考

Register as a new user and use Qiita more conveniently

1. You get articles that match your needs
2. You can efficiently read back useful information
3. You can use dark theme
What you can do with signing up
0