2024-04-19 19:47:25 发布
网友
我有一个列表,分别包含一个人的姓名、年龄和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的项。我怎样才能解决这个问题?你知道吗
请尝试以下操作:
alist = [ (('john', 37), 8), (('john', 37), 8) ] sum(1 for x in alist if x[1] == 8)
您必须以某种方式指定id字段作为元组中的第二个元素存在,然后仅过滤出那些具有id == 8的元组,最后为找到的每个元组求和1—或者我们可以找出结果列表的长度,但是为什么在生成器足够时创建临时列表呢?你知道吗
id
id == 8
正如评论中指出的,这一点也很有效:
sum(x[1] == 8 for x in alist)
上面的代码段之所以有效,是因为在比较x[1] == 8中,True值的计算结果为1,False值的计算结果为0。你知道吗
x[1] == 8
True
1
False
0
名单必须更细。 Python不计算嵌套列表。所以应该是:
alist=[(('john', 37), 8),(('john', 37), 8),8,8]
让python返回2
下面是用来修饰列表的ways
只有当8是alist的元素时,alist.count(8)才会起作用:
8
alist
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
请尝试以下操作:
您必须以某种方式指定
id
字段作为元组中的第二个元素存在,然后仅过滤出那些具有id == 8
的元组,最后为找到的每个元组求和1—或者我们可以找出结果列表的长度,但是为什么在生成器足够时创建临时列表呢?你知道吗正如评论中指出的,这一点也很有效:
上面的代码段之所以有效,是因为在比较
x[1] == 8
中,True
值的计算结果为1
,False
值的计算结果为0
。你知道吗名单必须更细。 Python不计算嵌套列表。所以应该是:
让python返回2
下面是用来修饰列表的ways
只有当
8
是alist
的元素时,alist.count(8)
才会起作用:8
是列表第一个元素的元素:因此,要计算出现的次数,必须检查
8
是否在alist
的每个元素中:相关问题 更多 >
编程相关推荐