2017-02-21 5 views
-8

Wir vertreten Noten von Schlägern über eine Folge von Übereinstimmungen in einem zweistufigen Wörterbuch wie folgt:Python-Programm mit Wörterbuch

{ 
     '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 Übereinstimmungen verbundenen Namen sind nicht festgelegt (hier sind sie 'match1','match2','match3'), noch sind die Namen der Spieler. Ein Spieler muss nicht haben eine Punktzahl in allen aufgezeichneten Spiele

eine Python-Funktion orangecap(d) definieren, die ein Wörterbuch d dieser Form liest und identifiziert den Spieler mit der höchsten Gesamtpunktzahl. Deine Funktion sollte ein Paar (playername,topscore) zurückgeben, wobei Spielername eine string ist, der Name des Spielers mit der höchsten Punktzahl und der Topscore ist integer, 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) 

wie Programm in Python schreiben?

+0

Bitte zeigen Sie, was Sie bisher versucht haben. –

+0

Schritt 1: lernen Sie etwas Python; Schritt 2: Schreibe dieses Programm in Python; Schritt 3: ??? Schritt N: Profit! – ForceBru

+0

def orangecap (d): gesamt = 0 für n in ["player1", "player2", "player3", "player4", "ashwin", "kohli", "pujara"]: for match in d .keys(): wenn n in d [übereinstimmen] .keys(): gesamt [n] = gesamt [n] + d [gesamt] [n] zurück (gesamt). Ich habe so viel nur ich habe keine Ahnung, wie weitergehen –

Antwort

0

Try This:

def orangecap(match_details): 
    players_data = {} 
    for k, v in match_details.iteritems(): 
     for player_name, score in v.iteritems(): 
      prev_player = player_name 
      if prev_player == player_name: 
       score = players_data.get(player_name, 0) + score 
      players_data[player_name] = score 
    high_score_player = max(players_data, key=lambda i: players_data[i]) 
    print (str(high_score_player), players_data[high_score_player]) 
+0

seine Anzeige Fehler: traceback (letzten Aufruf letzten): \ n Datei "test.py", Zeile 48, in \ n drucken (orangecap (arg), end = "") \ n Datei "test.py", Zeile 3, in orangecap \ n für k, v in match_details.iteritems(): \ n AttributError: 'dict' Objekt hat kein Attribut 'iteritems ' –

+0

Ich habe versucht mit Python2.7 Version funktioniert gut in meinem System. überprüfen Sie Ihre Python-Version. – Mushir

+0

Ich arbeite in python3. Nachdem ich das Programm kompiliert habe, gebe ich folgendes ein: orangecap ({'match1': {'player1': 57, 'player2': 38}, 'match2': {'player3': 9, 'player1': 42}, 'match3 ': {' player2 ': 41,' player4 ': 63,' player3 ': 91}}) (' player3 ', 100). Dann zeigt es diesen Fehler. –