Skip to main content
 首页 » 编程设计

python之计算一个元素在多个列表中的出现次数

2025年05月04日10youxin

我有几个列表:

l1 = [1,2,3,4,5,6,7,8] 
l2 = [1,3,5,7] 
l3 = [4,5,1,8,2] 
l4 = [1,2,6,7] 
l5 = [5,7,8] 

我想计算每个元素出现的次数,所以输出应该是

element 1 appears in 3 lists 
element 2 in 3 
element 3 in 2 
element 4 in 2 
element 5 in 4 
... 

我可以使用任何内置函数或聪明的想法来做到这一点吗?因为我可以使用循环来做到这一点,但这似乎是一个非常具有破坏性的想法。

请您参考如下方法:

我会合并 collections.Counter与 itertools.chain :

>>> all_lists = [l1, l2, l3, l4, l5] 
>>> from itertools import chain 
>>> from collections import Counter 
>>> all_counts = Counter(chain.from_iterable(all_lists)) 
>>> for k, v in all_counts.items(): 
...     print('element', k, 'appears in', v, 'lists') 
...      
element 1 appears in 4 lists 
element 2 appears in 3 lists 
element 3 appears in 2 lists 
element 4 appears in 2 lists 
element 5 appears in 4 lists 
element 6 appears in 2 lists 
element 7 appears in 4 lists 
element 8 appears in 3 lists 

(如果你想保证输出顺序是升序的,你可能想在其中加入一个sorted。)

如果@jonrsharpe 是正确的,并且您需要处理一个元素可以在单个列表中多次出现的情况(现在它真的是“元素 1 出现 4 次”,而不是 4列表),你可以在那里扔一个 set:

all_counts = Counter(chain.from_iterable(map(set, all_lists))) 

这样无论一个元素在列表中出现多少次,它都只计为 1。