首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据拆分成字典

将数据拆分成字典
EN

Stack Overflow用户
提问于 2015-02-05 03:07:53
回答 3查看 61关注 0票数 0

我有一个很长的列表,就像下面的值一样,我正在考虑把它转换成字典。我想在python中创建字典,对于每个键0,1,2,...(比如n),值是属于该键的所有值的总和。例如,

代码语言:javascript
复制
0 -29.8568331501
1 -27.4866699437
2 -27.1228643508
0 -10.8685684486
1 -9.41353774283
2 -10.3218886291
...

然后,

代码语言:javascript
复制
dict = {0: SUM(-29.8568331501+-10.8685684486+..), 1:SUM(-27.4866699437+-9.41353774283+..), 2:1:SUM(-27.1228643508+-10.3218886291+..)}

我是一名python新手,如果有任何关于如何做到这一点的指导,我将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2015-02-05 03:27:55

因此,假设您已经将数据读取到列表中(或者正在使用生成器),那么您确实可以通过一种非常简单的方式来完成此操作:

代码语言:javascript
复制
from collections import defaultdict

sums = defaultdict(float)
for key, val in data:
    sums[key] += val

我建议您熟悉一下collections模块,因为它有很多适用于许多工作的工具。在这种情况下,defaultdict就像一个普通的python字典,但是对于还不在其中的键,它有一个默认值(在这种情况下,默认值是float()的值,即0.0)。多亏了这一点,你不需要费心去检查这个键是否已经存在于字典中。

票数 2
EN

Stack Overflow用户

发布于 2015-02-05 03:14:05

好的,有两件事:

  1. 如果你的键实际上是1…N,那么不要使用字典,而是一个简单的列表。
  2. solution with a dict,I,为了清楚起见,我称之为dictionary。1...N是keys,您的浮点数是values:

if key is in dictionary: dictionarykey += value else: dictionarykey = value

您需要将其应用于每个key, value对。

票数 1
EN

Stack Overflow用户

发布于 2015-02-05 03:22:11

您可以使用字典理解,如中所述:

Mapping Over Values

代码语言:javascript
复制
tmpDict = {k: f(k,v) for k, v in tmp.items()}

f(k,v)替换为执行求和的函数。

示例:

生成数据

代码语言:javascript
复制
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

执行存储桶求和

代码语言:javascript
复制
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}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28329409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档