python .count for multidimensional arrays (list of lists)
如何计算使用嵌套列表创建的多维数组中某个值的出现次数?如中所示,在以下列表中查找"foobar"时:
1 | list = [['foobar', 'a', 'b'], ['x', 'c'], ['y', 'd', 'e', 'foobar'], ['z', 'f']] |
它应该返回
(是的,我知道我可以编写一个只搜索所有循环的循环,但我不喜欢这个解决方案,因为它相当耗时(编写和运行时))。
数数吗?
1 2 3 | >>> list = [['foobar', 'a', 'b'], ['x', 'c'], ['y', 'd', 'e', 'foobar'], ['z', 'f']] >>> sum(x.count('foobar') for x in list) 2 |
首先使用
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!' |
这将使用子列表的扁平化,然后使用集合模块和计数器产生字数。