我需要一些帮助,试图找出一个我正在努力编写的快速算法。基本上我有一个看起来像这样的列表:
season = [[['P1', '3', 'P2', '4'], ['P3', '2', 'P4', '1'],
['P1', '2', 'P3', '5'], ['P4', '2', 'P1', '3']]]
每个嵌套列表代表玩家之间游戏中的得分,列表中有更多嵌套列表,其格式如上图所示,玩家最多可达32个。
我想要做的是写一个算法,让我能够显示在列表中获胜最多的玩家,以及他们取得的胜利数量,我正在努力弄清楚如何做这个,所以任何帮助都将不胜感激!
以下是我到目前为止:
count = 0
for matchScores in season:
for scores in matchScores:
playerName = score[0]
if playerName and score[1] > score[3]
count = count + 1
列表'赛季'是由:
创建的season = []
season.append(tournament1)
season.append(tournament2)
season.append(tournament3)
等
答案 0 :(得分:1)
你可以做这样的事情
<强>代码强>
scores = dict()
for match in season:
for score in match:
if int(score[1]) > int(score[3]):
if score[0] not in scores:
scores[score[0]] = 0
scores[score[0]] += 1
elif int(score[1]) < int(score[3]):
if score[2] not in scores:
scores[score[2]] = 0
scores[score[2]] += 1
print(scores)
<强>结果强>
{'P2': 1, 'P3': 2, 'P1': 1}
这将为您提供所有球员及其分数的字典。从那里,你可以做这样的事情
player_with_most_wins = max(scores, key=scores.get)
print(player_with_most_wins + " has " + str(scores[player_with_most_wins]) + " wins")
打印出获胜最多的玩家,以及他们获得的胜利次数如下:
P3 has 2 wins
答案 1 :(得分:0)
以下是将胜利与每位玩家联系起来的一种方式:
season = [[['P1', '3', 'P2', '4'], ['P3', '2', 'P4', '1'],
['P1', '2', 'P3', '5'], ['P4', '2', 'P1', '3']]]
wins = {}
for matchScores in season:
for score in matchScores:
p1, s1, p2, s2 = score
s1, s2 = int(s1), int(s2)
if s1 > s2:
wins.setdefault(p1, []).append(score)
elif s1 < s2:
wins.setdefault(p2, []).append(score)
print(wins)
{
'P2': [['P1', '3', 'P2', '4']],
'P3': [['P3', '2', 'P4', '1'], ['P1', '2', 'P3', '5']],
'P1': [['P4', '2', 'P1', '3']]
}