2016-08-18 1 views
-1

Wir vertreten Noten von Schlägern über eine Folge von Übereinstimmungen in einem zweistufigen Wörterbuch wie folgt:-Code für die Analyse von Scores

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

Jedes Spiel wird von einer Zeichenkette identifiziert wird, da jeder Spieler ist. Die Punktzahlen sind alle Ganzzahlen. Die mit den Matches verbundenen Namen sind nicht festgelegt (hier sind sie "match1", "match2", "match3"), noch sind die Namen der Spieler. Ein Spieler braucht keine Punktzahl in allen Spielen zu haben

Definieren Sie eine Python-Funktion "orangecap (d)", die ein Wörterbuch d dieses Formulars liest und den Spieler mit der höchsten Gesamtpunktzahl identifiziert. Deine Funktion sollte ein Paar (Spielername, Topscore) zurückgeben, wobei Spielername eine Zeichenfolge ist, der Name des Spielers mit der höchsten Punktzahl und Topscore ist eine Ganzzahl, die Gesamtpunktzahl von Spielername.

Die Eingabe erfolgt so, dass für die höchste Gesamtpunktzahl nie eine Verbindung besteht.

Zum Beispiel:

>>> orangecap({'match1':{'player1':57, 'player2':38}, 'match2':{'player3':9, 'player1':42}, 'match3':{'player2':41, 'player4':63, 'player3':91}}) 
('player3', 100) 

>>> orangecap({'test1':{'Ashwin':84, 'Kohli':120}, 'test2':{'ashwin':59, 'Pujara':42}}) 
('Kohli', 120) 
+0

und was genau ist das Problem, das Sie konfrontiert sind? –

+1

Stack Overflow ist kein Code-Wringdienst. Wenn du willst, dass jemand deine Hausaufgaben für dich macht, hast du (hoffentlich) kein Glück. Stattdessen sollten Sie versuchen, das Problem selbst zu lösen. Wenn Sie Probleme haben, dann kommen Sie und beschreiben Sie uns und wir helfen Ihnen gerne, herauszufinden, was falsch ist und wie Sie es beheben können. – Blckknght

Antwort

0

Verwenden Sie die Methode 'get' einen Standardwert von Null fügen Sie dann zurückzukehren. Wie folgt:

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

def orangecap(dict1): 
    dict2 = {} 
    for k1 in dict1: 
     for k2 in dict1[k1]: 
      dict2[k2] = dict2.get(k2, 0) + dict1[k1][k2] 
    player = max(dict2, key=dict2.get) 
    return player, dict2[player] 

print (orangecap(adict)) 


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


>>> print (orangecap(adict)) 
('player3', 100) 
>>>