我有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
可以应用于一个列表中,但是如何计算整个列表呢?
答案 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)))