2016-08-15 9 views
-5

個々のプレイヤーのスコアを追加したいと思います。プレイヤーが得点したほとんどのランを表示したいと思います。私は多くのソリューションが、それは別の試合から個々の選手の得点を加算するようにロジックを作成することができないを試してみましたPythonで辞書の値を追加する

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

:これは私が言及しています辞書の一例です。どんな助けにも感謝します。前もって感謝します。

+2

何を試しましたか?あなたのソリューションを投稿し、何が間違っているのかを説明してください。また、取得したい出力を表示してください。 – GingerPlusPlus

+0

あなたは 'collections.Counter'に興味があるかもしれません。 – GingerPlusPlus

+0

[ネストされたディクショナリの値内の値の合計を見つける]の可能な複製(http://stackoverflow.com/questions/39000681/find-the-sum-of-values-within-the-values-of-a -nested-dictionary) – Karin

答えて

0
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 

クイック概要、プレイヤーは新しい辞書にない場合は、メンバーシップを作成し、そのプレイヤーのスコアの鍵を指します。それ以外の場合は、そのプレーヤーの合計にスコアを加算してください。

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} 
0

はあなたの問題の解決策である、

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] 

が、これはあなたのお役に立てば幸いです。

関連する問題