python - 如何根据defaultdict中的key累加值

标签 python dictionary iterator key defaultdict

如果我有一个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?

关于python - 如何根据defaultdict中的key累加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14947341/

相关文章:

python - 如何在ubuntu中设置crontab的路径

python - 限制函数/方法的可选位置参数的数量

python - 使用 Python 在 Selenium WebDriver 中获取 WebElement 的 HTML 源代码

reference - 将元组引用的迭代器解压缩到两个引用集合中

java - 使用Iterator遍历ArrayList并使用instanceof设置对象

python - 如何使用文本分析来调查问卷回复?

javascript - 与普通对象类似地访问 JavaScript 映射

python - 如何按值重新排列双字典(Python3)

c++ - 模板类之间的可见性

Python 从字典中删除值适合函数的项目?