Python count occurrence返回0

2024-04-19 19:47:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

当我尝试时:

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

count_ID=alist.count(8)
print count_ID

我收到:

count_ID returns 0

在本例中,我希望它返回2,因为列表中有2个id=8的项。我怎样才能解决这个问题?你知道吗


Tags: id列表countjohn次数returns姓名print
3条回答

请尝试以下操作:

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

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

正如评论中指出的,这一点也很有效:

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

上面的代码段之所以有效,是因为在比较x[1] == 8中,True值的计算结果为1False值的计算结果为0。你知道吗

名单必须更细。 Python不计算嵌套列表。所以应该是:

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

让python返回2

下面是用来修饰列表的ways

只有当8alist的元素时,alist.count(8)才会起作用:

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

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

>>> 8 in alist[0]
True

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

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

相关问题 更多 >