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
下面是美化名单的方法
只有当
1 2 3 | >>> alist = [(('john', 37), 8),(('john', 37), 8)] >>> 8 in alist False |
但是,
1 2 | >>> 8 in alist[0] True |
。
因此,要计算发生的次数,必须检查
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) |
您必须以某种方式指定
正如评论中所指出的,这也适用于:
1 | sum(x[1] == 8 for x in alist) |
号
上述代码段之所以起作用,是因为在比较中,