from itertools import izip_longest
totals = (sum(vals) for vals in izip_longest(*mydict.itervalues(), fillvalue=0))
print tuple(totals)
在英语......
- 压缩列表(字典值)一起填充0(如果你想,你不必)。
- 总和每个压缩组
例如,
mydict = {
'J': [1, 2, 3, 4, 5],
'M': [1, 2, 3, 4, 5],
'Z': [1, 2, 3, 4]
}
## When zipped becomes...
([1, 1, 1], [2, 2, 2], [3, 3, 3], [4, 4, 4], [5, 5, 0])
## When summed becomes...
(3, 6, 9, 12, 10)
它真的不作出创建一个新的字典意义上的新键(可能)毫无意义。结果与原始键无关。更合适的是一个元组作为results[0]
在原来的字典值等持有的所有值的总和在位置0
如果必须有一个快译通,采取totals
迭代器,并把它变成字典这样的:
new_dict = dict(('Values%d' % idx, val) for idx, val in enumerate(totals))
到底是什么问题?迭代字典有问题吗? –
1.)第一个例子中的'J'是什么? 2)[1,2,3]是一个列表而不是字典 –