Python计数出现次数返回0

Python count occurrence returns 0

我有一个列表,分别包含一个人的姓名、年龄和ID。我要计算列表中给定ID的出现次数。

当我尝试时:

1
2
3
4
alist=[(('john', 37), 8),(('john', 37), 8)]

count_ID=alist.count(8)
print count_ID

我收到:

1
count_ID returns 0

在本例中,我希望它返回2,因为列表中有2个id=8的项。我怎么修这个?


这张单子一定要拍马屁。python不计算嵌套列表。所以应该是:

1
alist=[(('john', 37), 8),(('john', 37), 8),8,8]

让python返回2

下面是美化名单的方法


只有当8alist的一个元素时,alist.count(8)才有效:

1
2
3
>>> alist = [(('john', 37), 8),(('john', 37), 8)]
>>> 8 in alist
False

但是,8是列表第一个元素的元素:

1
2
>>> 8 in alist[0]
True

因此,要计算发生的次数,必须检查8是否在alist的每个元素中:

1
2
>>> sum(i[1] == 8 for i in alist)
2


试试这个:

1
2
alist = [ (('john', 37), 8), (('john', 37), 8) ]
sum(1 for x in alist if x[1] == 8)

您必须以某种方式指定id字段作为元组中的第二个元素存在,然后只筛选出id == 8的元组,最后对找到的每个元组求和1—或者我们可以找出结果列表的长度,但是为什么在生成器足够时创建临时列表?

正如评论中所指出的,这也适用于:

1
sum(x[1] == 8 for x in alist)

上述代码段之所以起作用,是因为在比较中,x[1] == 8的值评估为1False评估为0