2014-12-06 76 views
0

我想添加他每個球員已經分配給他的得分項數量,並發現返回每個球員歸因於他的得分數量是有問題的。我的代碼如下,但我只是不能似乎得到了最後一關:尋找每個球員的得分數

with open("players.dat") as f: 
    group = [] 
    for line in f: 
     fields = line.split() 
     group.append((fields[0], int(fields[1]))) 
     print(group) 

from collections import deque 

player_stats = {} 
with open("players.dat") as f: 
    for line in f: 
     name, score = line.split() 
     player_stats.setdefault(name, deque(maxlen=3)) 
     player_stats[name].append(int(score)) 

print(player_stats) 
print(len(score)) 

player_totals = {name: sum(scores) for name, scores in player_stats.items()} 
print(player_totals) 

player_totals = {name: max(scores) for name, scores in player_stats.items()} 
print(player_totals) 

player_totals = {name: min(scores) for name, scores in player_stats.items()} 
print(player_totals) 

#testing counting number of scores for each player 
#from collections import Counter 
#items = Counter(val[1] for val in player_stats.values()) 
#print(items) 

player_totals = {name:len(score)} 
print(player_totals) 

我的數據文件是:

rooney 12 
rooney 23 
rooney 56 
rooney 27 
ronaldo 14 
ronaldo 34 
messi 23 
messi 45 
messi 12 
messi 56 

我基本上是試圖找到每個球員的平均得分。

+0

你爲什麼要使用'deque'這裏對象?這將只存儲*最後3個值*而不是所有的值。 – 2014-12-06 12:35:15

+0

我只需要最後三個值。然後對於每個玩家我只需要知道存儲了多少個值。我有每個球員的總和,最大值和最小值,但我也需要這個平均值,這就是爲什麼我需要知道每個球員存儲了多少個值 – 2014-12-06 12:40:58

回答

0

collections.deque() documentation

除了上述之外,雙端支持迭代,酸洗,len(d)reversed(d)copy.copy(d)copy.deepcopy(d),與in操作者會員資格測試,並且下標引用如d[-1]

強調我的

爲了得到長,只是len(scores)使用:

player_averages = {name: sum(scores)/len(scores) for name, scores in player_stats.items()} 
+0

乾杯Martijn工作 – 2014-12-06 12:54:02

+0

有沒有一種方法可以在字母上添加名稱和然後顯示每個玩家的平均值? – 2014-12-06 13:41:06

+0

@DarthSidius:只需在排序後的(player_averages)中使用':print(name,player_averages [name])';字典上的'sorted()'調用給你一個排序後的鍵列表。 – 2014-12-06 13:42:25