2014-09-05 5 views
0

나는 튜플 (timestamp, someOtherValue)을 가진 목록을 가지고있다. 다음과 같은 튜플을 가진 새로운 목록을 만들고 싶습니다. (타임 스탬프, 이 타임 스탬프의 모든 someOtherValue 합계). 나는 목록 이해력을 계산하려고 노력했지만, 나는 붙어있다. 파이썬에서 영리한 방법으로 그것을 할 수 있습니까?값을 기반으로 목록에 튜플을 병합하는 방법은 무엇입니까?

+0

타임 스탬프에 정렬 초기 목록인가? –

답변

3
l = [("timestamp1", 1),("timestamp1", 2),("timestamp1", 1),("timestamp2", 2)] 
d = {} 
for ts, val in l: 
    d.setdefault(ts,0) 
    d[ts] += val 
print d.items() 
[('timestamp2', 2), ('timestamp1', 4)] 

또는 사용하십시오 defaultdict :

from collections import defaultdict 
l = [("timestamp1", 1),("timestamp1", 2),("timestamp1", 1),("timestamp2", 2)] 
d = defaultdict(int) 
for ts, val in l: 
    d[ts] += val 
print (d.items()) 
[('timestamp2', 2), ('timestamp1', 4)] 
+0

@PeterDeGlopper, 잘못된 코드를 게시했습니다. –

+0

첫 번째 양식은'd [ts] = d.get (ts, 0) + val'이어야합니다. –

관련 문제