我有3个列表,每个列表中都有所有唯一元素,我想计算每个元素的出现次数。这里的“唯一”表示列表中的所有元素都是唯一的,没有重复的元素。数据示例:list(c[0]): list(c[1]): list(c[1]): a a ab b bc cd因此,所需的输出应为a:3,b:3,c:2,d:1我知道这Counter可以应用于一个列表中,但是如何计算多个列表呢?
3 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
展平列表,然后使用counter:
假设lst是有问题的三个列表的列表:
flat = [i for sub in lst for i in sub]
Counter(flat)
陪伴而非守候
TA贡献1757条经验 获得超8个赞
使用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})
慕无忌1623718
TA贡献1744条经验 获得超4个赞
将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}
添加回答
举报
0/150
提交
取消