计算列表中的类型对象

时间:2014-11-20 02:39:36

标签: python list class python-3.x instances

您有一个很好的方法可以计算Sugargoblet的数量吗?

class Sugar:pass
class Milk:pass
class Coffee:pass

goblet = [Sugar(), Sugar(), Milk(), Coffee()]
sugar_dosage = goblet.count(Sugar) #Doesn't work

1 个答案:

答案 0 :(得分:5)

您可以将generator expressionsumisinstance

一起使用
sum(isinstance(x, Sugar) for x in goblet)
# or
sum(1 for x in goblet if isinstance(x, Sugar))

此外,list.count无效,因为该方法正在测试列表中等于 Sugar的项目数。换句话说,它基本上为列表中的每个项目执行item==Sugar。这是不正确的,因为您想要测试每个项目的类型,这是isinstance所做的。