Python .count多维数组(list(列表)

python .count for multidimensional arrays (list of lists)

如何计算使用嵌套列表创建的多维数组中某个值的出现次数?如中所示,在以下列表中查找"foobar"时:

1
list = [['foobar', 'a', 'b'], ['x', 'c'], ['y', 'd', 'e', 'foobar'], ['z', 'f']]

它应该返回2

(是的,我知道我可以编写一个只搜索所有循环的循环,但我不喜欢这个解决方案,因为它相当耗时(编写和运行时))。

数数吗?


1
2
3
>>> list = [['foobar', 'a', 'b'], ['x', 'c'], ['y', 'd', 'e', 'foobar'], ['z', 'f']]
>>> sum(x.count('foobar') for x in list)
2

首先使用itertools将列表连接在一起,然后使用Collections模块对每次出现的事件进行计数:

1
2
3
4
5
6
import itertools
from collections import Counter

some_list = [['foobar', 'a', 'b'], ['x', 'c'], ['y', 'd', 'e', 'foobar'], ['z', 'f']]
totals = Counter(i for i in list(itertools.chain.from_iterable(some_list)))
print(totals["foobar"])


1
2
3
4
5
6
>> from collections import Counter
>> counted = Counter([item for sublist in my_list for item in sublist])
>> counted.get('foobar', 'not found!')
>> 2
#or if not found in your counter
>> 'not found!'

这将使用子列表的扁平化,然后使用集合模块和计数器产生字数。