我有一个很长的列表,就像下面的值一样,我正在考虑把它转换成字典。我想在python中创建字典,对于每个键0,1,2,...(比如n),值是属于该键的所有值的总和。例如,
0 -29.8568331501
1 -27.4866699437
2 -27.1228643508
0 -10.8685684486
1 -9.41353774283
2 -10.3218886291
...然后,
dict = {0: SUM(-29.8568331501+-10.8685684486+..), 1:SUM(-27.4866699437+-9.41353774283+..), 2:1:SUM(-27.1228643508+-10.3218886291+..)}我是一名python新手,如果有任何关于如何做到这一点的指导,我将不胜感激。
发布于 2015-02-05 03:27:55
因此,假设您已经将数据读取到列表中(或者正在使用生成器),那么您确实可以通过一种非常简单的方式来完成此操作:
from collections import defaultdict
sums = defaultdict(float)
for key, val in data:
sums[key] += val我建议您熟悉一下collections模块,因为它有很多适用于许多工作的工具。在这种情况下,defaultdict就像一个普通的python字典,但是对于还不在其中的键,它有一个默认值(在这种情况下,默认值是float()的值,即0.0)。多亏了这一点,你不需要费心去检查这个键是否已经存在于字典中。
发布于 2015-02-05 03:14:05
好的,有两件事:
dictionary。1...N是keys,您的浮点数是values:if key is in dictionary: dictionarykey += value else: dictionarykey = value
您需要将其应用于每个key, value对。
发布于 2015-02-05 03:22:11
您可以使用字典理解,如中所述:
tmpDict = {k: f(k,v) for k, v in tmp.items()}将f(k,v)替换为执行求和的函数。
示例:
生成数据
tmp = {}
for i in range(0, 10):
tmp [i] = [i for x in range(0, 10)]{0: 0,0,0,0,0,0,0,0,0,0,1: 1,1,1,1,1,1,1,2: 2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,5: 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6: 6,6,6,6,6,6,6,6,6,7: 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,9: 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
执行存储桶求和
tmpDict = {k: sum(v) for k, v in tmp.items()}结果集:
{0: 0,1: 10,2: 20,3: 30,4: 40,5: 50,6: 60,7: 70,8: 80,9: 90}
https://stackoverflow.com/questions/28329409
复制相似问题