如何在嵌套列表中获得元素计数?



我正在尝试计算嵌套列表中的标签,并将感谢任何关于如何去做它的帮助。下面给出了我试图计数的数组的一个示例。这不是真正的数组,但已经足够近似了:

x = [[[0,0,1,0,2,3],-1],[[-1,1,1,0,2,5],-1],[[0,0,1,0,2,1],-1],[[0,0,-1,0,2,3],0]]

我想要的是计算给定整数在中间列表的第二个元素中出现的所有次数(为了更好地可视化,我想计算列表中X出现的所有次数,比如[[[],X]])。

例如,在上面的数组中计数-1将得到3而不是5。我不想进入循环,计数器和这样幼稚的计算,因为我正在处理的数组相当大。有什么标准的python库可以处理这种情况吗?

一种方法:

data = [[[0, 0, 1, 0, 2, 3], -1], [[-1, 1, 1, 0, 2, 5], -1], [[0, 0, 1, 0, 2, 1], -1], [[0, 0, -1, 0, 2, 3], 0]]

res = sum(1 for _, y in data if y == -1)
print(res)

3

如果需要计算多个元素,可选择使用collections.Counter

res = Counter(y for _, y in data)
print(res)

Counter({-1: 3, 0: 1})
第三种选择是使用operator.countOf:
from operator import countOf
res = countOf((y for _, y in data), -1)
print(res)

3

您可以使用collections.Counter:

from collections import Counter
c = Counter((i[1] for i in x))
c[-1]

输出:

>>> c[-1]
3
>>> c
Counter({-1: 3, 0: 1})
x = [
[ [0,0,1,0,2,3], -1],
[ [-1, 1, 1, 0, 2, 5], -1],
[ [0, 0, 1, 0, 2, 1], -1],
[ [0, 0, -1, 0, 2, 3], 0]
]

这些是列表[[....]中的项], x]与另一个列表和一个整数。你需要计算x为-1而不是0的次数

x = [
[ [0,0,1,0,2,3], -1],
[ [-1, 1, 1, 0, 2, 5], -1],
[ [0, 0, 1, 0, 2, 1], -1],
[ [0, 0, -1, 0, 2, 3], 0]
]
def counter(_list, element):
count = 0
for item in _list:
if item[1] == element:
count += 1
return count
print(counter(x, -1))
>>> 3

最新更新