Python 如何根据值在列表中合并元组?

Python 如何根据值在列表中合并元组?,python,list-comprehension,Python,List Comprehension,我有一个元组列表:(timestamp,someOtherValue)。我想用这样的元组构建一个新列表:(timestamp,这个timestamp的所有someOtherValue的总和)。我试图找出一些列表理解,但我被卡住了。在Python中有没有一种聪明的方法 l = [("timestamp1", 1),("timestamp1", 2),("timestamp1", 1),("timestamp2", 2)] d = {} for ts, val in l: d.setdefa

我有一个元组列表:(timestamp,someOtherValue)。我想用这样的元组构建一个新列表:(timestamp,这个timestamp的所有someOtherValue的总和)。我试图找出一些列表理解,但我被卡住了。在Python中有没有一种聪明的方法

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)]
或使用:

或使用:

或使用:

或使用:


初始列表是否按时间戳排序?初始列表是否按时间戳排序?初始列表是否按时间戳排序?初始列表是否按时间戳排序?我认为第一种形式应该是
d[ts]=d.get(ts,0)+val
。第一种形式应该是
d[ts]=d.get(ts,0)+val
,我想,第一种形式应该是
d[ts]=d.get(ts,0)+val
,我想,第一种形式应该是
d[ts]=d.get(ts,0)+val
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)]