【问题标题】:adding values of dictionaries in python在python中添加字典的值
【发布时间】:2016-12-21 21:29:22
【问题描述】:

我想添加单个玩家的得分,并希望显示该玩家得分最多的得分。这是我所指的字典示例:

{'match1': {'player1': 57, 'player2': 38},
 'match2': {'player3': 9, 'player1': 42},
 'match3': {'player2': 41, 'player4': 63, 'player3': 91}}

我尝试了许多解决方案,但无法制定一个逻辑,以便将不同比赛中各个球员的得分相加。任何帮助都将是可观的。提前致谢。

【问题讨论】:

标签: python python-2.7 python-3.x dictionary


【解决方案1】:

遍历嵌套的dictionary 并将分数加到玩家总数字典中。

def find_totals(d):
    total = {}
    for match, results in d.items():
        for player, score in results.items():
            total[player] = total.get(player, 0) + score
    return total

样本输出

>>> d = {'match1':{'player1':57, 'player2':38}, 'match2':{'player3':9, 'player1':42}, 'match3':{'player2':41, 'player4':63, 'player3':91}}
>>> print find_totals(d)
{'player2': 79, 'player3': 100, 'player1': 99, 'player4': 63}

【讨论】:

    【解决方案2】:
    def score(match):
        players = {}
        for key in match:
            for player in match[key]:
                if player not in players:
                    players[player] =match[key][player]
                else:
                    players[player]+=match[key][player]
        return players
    

    快速概览,如果玩家不在新字典中,则创建成员资格并将键指向该玩家的分数。否则将分数添加到该玩家的总分中

    【讨论】:

      【解决方案3】:

      这里是您的问题的解决方案,

      d = {'match1':{'player1':57, 'player2':38}, 'match2':{'player3':9, 'player1':42}, 'match3':{'player2':41, 'player4':63, 'player3':91}}
      players = {}
      for key, val in enumerate(d):
          #print val
          for ele,value in enumerate(d[val]):
              #print value
              if value not in players:
                  players[value] = d[val][value]
              else:
                  players[value] += d[val][value]
      
      print players
      highest = 0
      highest_player = ""
      for key, value in enumerate(players):
          if players[value]>highest:
              highest = players[value]
              highest_player = highest_player.replace(highest_player, value)
      print highest_player,players[highest_player]
      

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 2020-06-10
        • 2018-07-22
        • 2018-05-27
        • 1970-01-01
        • 1970-01-01
        • 2023-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多