합계

2014-10-03 4 views
1

I 모습 CSV 데이터가 있습니다합계

17860 1 
17861 1 
17861 2 
17861 1 
17861 1 
17861 1 
17862 1 
17863 1 
17863 1 
17863 1 

내 목표는 그 결과 등을 얻기 위해, 왼쪽 열에서 일치의 합을 표시하는 출력을 얻을하는 것입니다 :

17860 1 
17861 6 
17862 1 
17863 3 

는 내가에 문제가 있어요 5 자리 숫자를 저장하여 열에서 데이터의 나머지 부분과 비교 한 후 합계를 얻기 위해 한 자리 숫자를 캡처 대해 이동하는 방법입니다.

답변

4

. 파일을 읽고 첫 번째 열 번호를 키로 저장하고 두 번째 열 값을 값으로 저장합니다. 키가 이미있는 것으로 판명되면 이전 값에 현재 값을 추가하거나 새 키를 추가하십시오.

hash = {} 
for line in file: 
    key, value = map(int, line.split()) 
    if key in hash: 
     hash[key] += value 
    else: 
     hash[key] = value 
+0

시작하기에 좋은 길 같아요. 고맙습니다! – user1764417

0
awk '{ sum[$1] += $2 } END { for (i in sum) print i, sum[i] }' t.txt 
17862 1 
17863 3 
17860 1 
17861 6 

아니면 더 읽기는 파일이 넣어 chmod +x을 당신은 프로그램으로 실행할 수 있습니다 : 당신은 해시 (파이썬에서 일명 사전) 데이터 구조를 활용할 수

#!/usr/bin/awk -f 

{ 
    sum[$1] += $2 
} 

END { 
    for (i in sum) 
    print i, sum[i] 
} 
+0

그건 파이썬이 아닙니다. –

+0

이것은 무엇입니까? 대본? – Nabin

+0

@Nabin : AWK 언어의 스크립트입니다. OP는 질문에 파이썬을 언급하지 않았으며 태그에서만 언급했습니다. –