Python 查找列表中"wins"最多的玩家



我需要一些帮助来试图找出我正在努力编写的快速算法。基本上我有一个列表,看起来像:

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)

你可以做这样的事情

法典

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

以下是将胜利与每个玩家相关联的一种方法:

法典:

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']]    
}

相关内容

  • 没有找到相关文章