计算整个列表中的出现次数

时间:2018-06-30 18:59:32

标签: python list count

我有3个列表,每个列表中都有所有唯一元素,我想计算每个元素的出现次数。这里的“唯一”表示列表中的所有元素都是唯一的,没有重复的元素。

数据示例:

list(c[0]):       list(c[1]):       list(c[1]):      
a                 a                 a
b                 b                 b
c                 c
d

所以所需的输出应该是

a:3,b:3,c:2,d:1

我知道Counter可以应用于一个列表中,但是如何计算整个列表呢?

4 个答案:

答案 0 :(得分:3)

整理列表,然后使用计数器:

假设lst是有问题的三个列表的列表:

flat = [i for sub in lst for i in sub]
Counter(flat)

答案 1 :(得分:0)

将3个列表与itertools.chain合并,然后使用collections.Counter对项目进行计数。

from collections import Counter
from itertools import chain
c = [['a', 'b', 'c', 'd'], ['a', 'b'], ['a']]
print(dict(Counter(chain(*c))))

这将输出:

{'a': 3, 'b': 2, 'c': 1, 'd': 1}

答案 2 :(得分:0)

使用chain.from_iterable将列表转换为平面列表,然后将其提供给Counter

from collections import Counter
from itertools import chain
c = [['a', 'b', 'c', 'd'], ['a', 'b'], ['a']]
Counter(chain.from_iterable(c))
# Counter({'a': 3, 'b': 2, 'c': 1, 'd': 1})

答案 3 :(得分:-1)

首先,您需要将列表转换为固定列表。

c = sum(c, [])

然后,您只需应用Counter

from collections import Counter
print(dict(Counter(c)))