我是一个每天都在与 Python 苦苦挣扎的初学者。我有一个大型数据集,第二列中有动物名称。我有一个程序可以按每个动物的名称来计算每个动物的数量(每行有 1 个动物名称和 1 个“计数”数据)。我正在尝试获取使用 Python 获得的计数数据的总和,但我无法做到这一点。我到目前为止的代码是:
import csv, collections
reader=csv.reader(open('C:\Users\Owl\Data.txt','rb'), delimiter='\t')
counts=collections.Counter()
for line in reader:
Name=line[1]
counts[Name]+=1
for (Name, count) in sorted(counts.iteritems()):
Output=list('%s' % count) #Make output string to a list
Sum=sum(Output) # Sum function requires a list
print 'Total kinds of Animals: %s' % Sum
我收到一条错误消息" File "sum_count.py", line 17, in <module> Sum=sum(Output) # Sum function requires a list TypeError: unsupported operand type(s) for +: 'int' and 'str'".
到目前为止我发现的是,因为sum
显然要求输入类型是一个列表,我将计数数据(它是字符串)转换为一个列表,但是当我这样做时Output=list('%s' % count)
,似乎所有计数数据都超过 2数字是分开的。例如,当我打印输出时,它会是这样的:
['1', '6', '3']
['3']
['1', '8', '5', '9']
['7', '9']
代替
['163']
['3']
['1859']
['79']
我在这里要做的是获得这些元素的单一“总和”。在这里,它将是 4。四种动物。
我在想这可能是我收到上述错误的原因。我可能错了,但有人可以帮我解决这个问题吗?提前谢谢你的帮助!