2014-12-02 4 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

еще получить error- значения в dictionary.py», строка 16, в суммы (player_stats.values ​​()) TypeError: неподдерживаемый тип операнда (ов) для +: 'Int' и«collections.deque ' –

+0

@DarthSidius, почему вы используете deque вместо списка? – MattDMo

+0

Это был самый простой способ получить только последние три записи для каждого игрока. Или я должен сказать, что единственный способ понять ... –

Смежные вопросы