Python字典和值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python字典和值相关的知识,希望对你有一定的参考价值。
我正在使用Python 2.7,我有一个看起来有点像这样的大字典
{J: [92704, 238476902378, 32490872394, 234798327, 2390470], M: [32974097, 237407, 3248707, 32847987, 34879], Z: [8237, 328947, 239487, 234, 182673]}
如何通过值对这些进行求和来创建一个新的字典,该字典对每个字典中的第一个值进行求和,然后是第二个等等
{FirstValues: J[0]+M[0]+Z[0]}
等等
答案
In [4]: {'FirstValues': sum(e[0] for e in d.itervalues())}
Out[4]: {'FirstValues': 33075038}
其中d
是你的字典。
另一答案
print [sum(row) for row in zip(*yourdict.values())]
yourdict.values()
获得所有列表,zip(* )
将第一,第二等项目组合在一起,sum
将每个组合在一起。
另一答案
我不知道为什么你需要字典作为输出,但这里是:
dict(enumerate( [sum(x) for x in zip(*d.values())] ))
另一答案
from itertools import izip_longest
totals = (sum(vals) for vals in izip_longest(*mydict.itervalues(), fillvalue=0))
print tuple(totals)
用英语讲...
- 将列表(dict值)压缩在一起,用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))
另一答案
说你有一些像这样的词典:
d = {'J': [92704, 238476902378, 32490872394, 234798327, 2390470],
'M': [32974097, 237407, 3248707, 32847987, 34879],
'Z': [8237, 328947, 239487, 234, 182673]}
创建一个defaultdict(int)
from collections import defaultdict
sum_by_index = defaultdict(int)
for alist in d.values():
for index,num in enumerate(alist):
sum_by_index[index] += num
以上是关于Python字典和值的主要内容,如果未能解决你的问题,请参考以下文章