python - 在Python中,如何找到字典中值的总和?每个键有多个值

标签 python dictionary

我的数据是制表符分隔的,如下所示:

Name   Count    Sample
Dog    .0001    1
Dog    .00003   1
Dog    .0001    2
Cat    .0004    1
Cat    .0002    1
Cat    .0003    2
Cat    .0002    2

在我将变量unid定义为与第三列(例如Dog_1)合并的第一列并将num定义为该行的计数后,我将每个num附加到unid下的字典中(使用Python 2.7),如下所示:

for line in K:
        sp = line.split("\t")
        name = sp[0]
        unid = sp[3][:-2] +"_"+ sp[0]
        num = int(Decimal(sp[1]))
        if not dict1.has_key(unid):
            dict1[unid] = []
        dict1[unid].append(num)

我尝试用这个来总结:

dictTot = sum(dict1.values())

但我收到此错误消息:

TypeError: unsupported operand type(s) for +: 'int' and 'list'

如何对这些值求和以便检索 Cat_1: .0006、Cat_2: .0005 等?

对不起大家,据我所知,我的?不太好。但正如雅各布下面所说, “dictTot = sum(sum(value) for value in dict1.values())”对所有总和进行求和,但我正在寻找的是独立地对每个键下的每组值求和,这样我就可以找出有多少只猫 sample 1中有,依此类推。也许 sum 不适合这个?抱歉,很明显我不是 Python 专家。

最佳答案

这不是 sum 的工作原理。您试图通过“添加”一堆列表来获取整数(或数值类型),因此内置函数会崩溃。试试这个:

dictTot = sum(sum(value) for value in dict1.values())

这将汇总所有的总和,这就是你想要的(我认为)。

编辑

显然您想要对列表中每个元素中的所有值求和。为此,您可以使用 dictionary comprehension :

dictTot = {key:sum(l_values) for key, l_values in dict1.items()}

关于python - 在Python中,如何找到字典中值的总和?每个键有多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11268092/

相关文章:

python - 从另一个文件中的一个文件访问类实例?

python - 无法在 Python 2.7 或 Python 3.3 中导入小数

python - TensorFlow : Loss matrix function

python - Elasticsearch 查询从 regexp 输入参数中查找列表中值的完全匹配

.net - Dictionary<K,V> 线程对于同时阅读和添加是否安全?

python - 如何自动安装本地 "development mode"包?

python - 创建或更新Python字典条目

java - 排序 double

python - 将 Python Dict 键映射到另一个 Dict

python - 无法从字典引用使用 "vars()[]"创建的变量