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

당신이 올바른지, 당신의 딕셔너리의 값이 대신하는 int 문자열입니다.

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

에 코드

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()) 

변화 표시된 라인이 블록에서 모든 설정이 있어야합니다.

+0

여전히 합계에서는, dictionary.py "라인 (16)에서 오류 - 값을 얻는 (player_stats.values ​​()) 오류 : 피연산자되지 않는 유형 (들)에 대한 + : '내부'와 'collections.deque ' –

+0

@DarthSidius 왜리스트 대신 deque를 사용하고 있습니까? – MattDMo

+0

각 플레이어에 대해 가장 최근의 세 항목 만 가져 오는 것이 가장 쉬운 방법입니다. 아니면 이해할 수있는 유일한 방법이라고 말해야합니까? –

관련 문제