我有一个如下所示的列表:
(151258350, 2464)
(151258350, 56)
(151262958, 56)
(151258350, 56)
(151262958, 112)
(151262958, 112)
(151259627, 56)
(151262958, 112)
(151262958, 56)
我想要一个看起来像这样的结果:
151259627 56
151262958 448
151258350 2576
这是我的代码:
for key, vals in d.items():
tempList.append((key, reduce(add, vals)))
这里,d是具有键值对的列表。 tempList是List,在按键对它们求和后将附加值。并添加是一个功能:
def add(x, y): return x+y
如果已经提出这个问题,请指出我,因为我自己找不到这个问题。
答案 0 :(得分:9)
使用Counter:
{{1}}
答案 1 :(得分:3)
num_list = [(151258350, 2464),
(151258350, 56),
(151262958, 56),
(151258350, 56),
(151262958, 112),
(151262958, 112),
(151259627, 56),
(151262958, 112),
(151262958,56)]
num_dict = {}
for t in num_list:
if t[0] in num_dict:
num_dict[t[0]] = num_dict[t[0]]+t[1]
else:
num_dict[t[0]] = t[1]
for key,value in num_dict.items():
print "%d %d" %(key,value)
答案 2 :(得分:2)
您可以使用计数器counters
l = [(151258350, 2464),
(151258350, 56),
(151262958, 56),
(151258350, 56),
(151262958, 112),
(151262958, 112),
(151259627, 56),
(151262958, 112),
(151262958, 56)]
count={}
for k,v in l:
if k in count:
count[k] += v
else:
count[k]=v
print count
第2部分
如果你找到了#34; Animesh"回答有趣,你可以用更简单的方式尝试:这不需要任何导入。不使用.get()
git fetch
答案 3 :(得分:1)
最简单的方法是使用defaultdict
result = defaultdict(int)
for key, value in source:
result[key] += value
# if you really want result as a list of tuples
rslt = list(result.items())
如果您的source
实际上是一个字典(不是您在问题中对其进行描述的元组列表),请将for key, value in source:
替换为for key, value in source.iteritems():
答案 4 :(得分:1)
这是一个简单的单行程序,无需导入任何库:
super.appConnect