python - 按类的属性分组和计数
问题描述
我有一个结果类如下
class Result:
cluster = -1;
label = -1;
集群和标签的值都可以在 0-9 之间,我想做的是计算集群中标签的数量。目前我正在使用以下代码进行计数,但这不是一个优雅的解决方案。resultList 是 Result 对象的列表。
countZero = 0;
countOne = 0;
countTwo = 0;
countThree = 0;
countFour = 0;
countFive = 0;
countSix = 0;
countSeven = 0;
countEight = 0;
countNine = 0;
for i in range(len(resultList)):
if resultList[i].cluster == 0:
if resultList[i].label == 0:
countZero = countZero + 1
if resultList[i].label == 1:
countOne = countOne + 1
if resultList[i].label == 2:
countTwo = countTwo + 1
if resultList[i].label == 3:
countThree = countThree + 1
if resultList[i].label == 4:
countFour = countFour + 1
if resultList[i].label == 5:
countFive = countFive + 1
if resultList[i].label == 6:
countSix = countSix + 1
if resultList[i].label == 7:
countSeven = countSeven + 1
if resultList[i].label == 8:
countEight = countEight + 1
if resultList[i].label == 9:
countNine = countNine + 1
print(countZero) #
print(countOne) #
print(countTwo) #
print(countThree) #
print(countFour) #
print(countFive) #
print(countSix) #
print(countSeven) #
print(countEight) #
print(countNine) #
任何有关寻找更好解决方案的建议或指导将不胜感激。
解决方案
Counter 函数返回一个字典,其中包含每个标签的计数。以这种方式将其用于集群 0:
from collections import Counter
Counter(resultList[resultList['cluster']==0]]['label'])