用于多维数组的python .count(列表列表)

时间:2013-07-18 08:23:32

标签: python

如何计算使用嵌套列表制作的多维数组中某些值的出现次数?如在以下列表中寻找'foobar'时:

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

它应该返回2

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

.count可能吗?

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:3)

首先join the lists together using itertools,然后使用Collections module计算每次事件:

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"])

答案 2 :(得分:0)

>> 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!'

这会使用展平子列表,然后使用collections模块和Counter 产生字数。