2016-06-29 3 views
1
{'Stephen Curry': [(22.6, 5.1, 3.4)], 'Draymond Green': [(16.5, 10.3, 6.3)], 'Lebron James': [(29.7, 11.3, 8.9)]}) 

Jeder Wert entspricht einen catergory in diesem Fall hat das Format (pts, reb, Assists) Ich versuche, den Maximalwert abrufen von pts, reb und assists zwischen jedem Spieler und schreibe in eine Datei. Ich habe Probleme, den Maximalwert mit dem richtigen Schlüssel zu vergleichen.wie Schlüssel mit bestimmtem Wert abzurufen, den Wert als Tupel (Python)

def writeMVP(myfile,statAverages): 
    myfile = open(myfile,"w") 
    myfile.write("NBA Finals Stats") 
    index = 0 
    for item in statAverages: 
    maxstat= max([avg[0][index] for avg in statAverages.values()]) 
    index = index + 1 
+0

Auf den ersten Blick sieht es so aus, als ob Sie vielleicht "item" anstelle von "statAverages" im Loop-Body sagen würden? –

+0

Können Sie uns die Ausgabe dieses Codes geben? – RoadRunner

+0

Ihr Wörterbuch hat Listenwerte, die jeweils ein Tupel enthalten. Ist das die richtige Struktur für Sie? –

Antwort

0

Ich würde nur den Schlüssel finden, um den Maximalwert wie folgt entsprechen:

In [13]: max_pts_player = max(stats, key=lambda x:stats[x][0][0]) 

In [14]: max_pts_player 
Out[14]: 'Lebron James' 

In [15]: max_reb_player = max(stats, key=lambda x:stats[x][0][1]) 

In [16]: max_reb_player 
Out[16]: 'Lebron James' 

In [17]: max_assits_player = max(stats, key=lambda x:stats[x][0][2]) 

In [18]: max_assits_player 
Out[18]: 'Lebron James' 

Und dann können Sie nur die max Stat-Index mit dem Spielernamen und Tupel abzurufen, die auf dem Stat entspricht:

In [19]: max_pts = stats[max_pts_player][0][0] 

In [20]: max_pts 
Out[20]: 29.7 

Aber wenn Sie mit dem Stat beginnen,

In [5]: max_pts 
Out[5]: 29.7 

In [6]: list(filter(lambda k:stats[k][0][0] == max_pts, stats))Out[6]: ['Lebron James'] 

Dieser Weg kann besser sein, wenn mehr als ein Spieler den maximalen stat haben kann.

0

Ok, das Beste aus meinem Verständnis so, das ist, was ich kam mit:

d = {'Stephen Curry': [(23.6, 5.1, 3.4)], 'Draymond Green': [(16.5, 10.3, 6.3)], 'Lebron James': [(29.7, 11.3, 8.9)]} 

lst_tuples = sorted(d.items()) 

max_pts = max(lst_tuples, key = lambda x: x[1][0][0]) 
max_rebs = max(lst_tuples, key = lambda x: x[1][0][1]) 
max_assists = max(lst_tuples, key = lambda x: x[1][0][2]) 

print_stat_1 = "Max points player: {0}, with a score of {1}.\n" \ 
       .format(max_pts[0], max_pts[1][0][0]) 

print_stat_2 = "Max rebs player: {0}, with a score of {1}.\n" \ 
       .format(max_rebs[0], max_rebs[1][0][1]) 

print_stat_3 = "Max assists player: {0}, with a score of {1}.\n" \ 
       .format(max_assists[0], max_assists[1][0][2]) 

with open("best_player_stats.txt", "w") as text_file: 
    text_file.write("NBA Finals Stats\n") 
    text_file.write("----------------\n") 
    text_file.write("%s\n%s\n%s\n" % (print_stat_1, print_stat_2, print_stat_3)) 

with open("best_player_stats.txt","r") as file: 
    print(file.read()) 

Welche ausdruckt:

NBA Finals Stats 
---------------- 
Max points player: Lebron James, with a score of 29.7. 

Max rebs player: Lebron James, with a score of 11.3. 

Max assists player: Lebron James, with a score of 8.9. 

Wenn ich nicht das Richtige getan zu haben, lassen Sie es Ich weiß in den Kommentaren unten.

0
data = {'Stephen Curry': [(22.6, 5.1, 3.4)], 
'Draymond Green': [(16.5, 10.3, 6.3)], 
'Lebron James': [(29.7, 11.3, 8.9)]} 


max_pts_player = list(reversed(sorted(data, key=lambda x: data[x][0][0])))[0] 
max_reb_player = list(reversed(sorted(data, key=lambda x: data[x][0][1])))[0] 
max_assits_player = list(reversed(sorted(data, key=lambda x: data[x][0][2])))[0] 

with open("nba_stats.txt", "w") as f: 
    f.write("NBA Finals Stats\n") 
    f.write("Maximum points player is " + max_pts_player + ", with a points of " + str(data[max_pts_player][0][0]) + ".\n") 
    f.write("Maximum rebs player is" + max_reb_player + ", with a points of " + str(data[max_reb_player][0][1]) + ".\n") 
    f.write("Maximum assits player is" + max_assits_player + ", with a points of " + str(data[max_reb_player][0][2]) + ".\n") 
Verwandte Themen