如果我有一个 defaultdict(list)
from collections import defaultdict
d =defaultdict(list)
such as 1: 0
1:0.2
1: 0.3
2: 0.2
2: 0.4
2: 0.1
......我如何将其转换为类似的defaultdict(list)
哪个值是具有相同键的第一个字典的值的累加,但永远不会大于1
1: 0
1: 0.2
1: 0.5
2: 0.2
2: 0.6
2: 0.7
.....
到目前为止我只有以下代码,它不太正确:-(
d2 = defaultdict(list)
for k in d.iterkeys()
v +=d(k)
d2[k]. append(v)
原始帖子有点令人困惑:这些示例看起来像多重映射而不是列表字典。
我假设您有一个包含数字列表的 defaultdict,并且您希望创建一个新的 defaultdict,其中包含每个列表中值的累积和。尝试这个:
from collections import defaultdict
d2 = defaultdict(list)
for k, v in d.iteritems():
sum = 0.0
v2 = []
for x in v:
sum += x
v2.append(sum)
d2[k] = v2
请注意,当您添加新值时,新的 defaultdict 不会自动计算累积和。
如果你安装了像 numpy 这样的库,你可以使用numpy.cumsum
而不是使用 python 循环来计算累积和。
我不清楚你所说的“永远不大于1”到底是什么意思。累加和达到1后是否要忽略元素?您是否想忽略大于 1 的单个值,但继续累加较小的值,即使总和超过 1?您是否希望每个输出列表中具有相同数量的元素,但将元素值限制为 1?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)