我的数据是制表符分隔的,如下所示:
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/