2014-12-02 58 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(score) 
     sum(player_stats.values()) 

print(player_stats) 

數據文件是:

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

回答

0

你是正確的,在你的字典中的值是字符串,而不是整數。在代碼

for line in f: 
    name, score = line.split() 
    player_stats.setdefault(name, deque(maxlen=3)) 
    player_stats[name].append(score) # this line 
    sum(player_stats.values()) 

改變標線該塊

player_stats[name].append(int(score)) 

,你應該準備就緒。

+0

仍然獲得在dictionary.py」,線16的無差錯值,在 總和(player_stats.values()) 類型錯誤:不支持的操作數類型(一個或多個)爲+: 'INT' 和「collections.deque ' – 2014-12-02 19:04:09

+0

@DarthSidius @DarthSidius爲什麼你用deque代替列表? – MattDMo 2014-12-02 19:06:46

+0

這是最簡單的方法,讓每個玩家獲得最近的三個條目或者我應該說我唯一能理解的方法...... – 2014-12-02 19:07:49