首页 > 解决方案 > 列表列表中的重复项

问题描述

我有一个以下格式的值列表。对于列表列表中的每个项目,我试图找出它是否存在于任何其他子列表中 - 如果是,我想计算一下。

[
    ['37772'],
    ['38119', '38120'],
    ['38103-2807', '38103-2897', '38103', '38104'],
    ['38138-3904', '38138'],
    ['37421'],
    ['37772'],
    ['37067'],
    ['37203'],
    ['38115'],
    ['38305'],
    ['37916'],
    ['37356'],
    ['38119']
]

结果:

37772 - 2
38119 - 2
38120 - 1
38103-2807 - 1
....

关于如何使用内置函数实现这一点的任何线索?

标签: pythonlist

解决方案


您可以使用内置模块itertools.chaincollections.Counter

lst = [['37772'],
    ['38119', '38120'],
    ['38103-2807', '38103-2897', '38103', '38104'],
    ['38138-3904', '38138'],
    ['37421'],
    ['37772'],
    ['37067'],
    ['37203'],
    ['38115'],
    ['38305'],
    ['37916'],
    ['37356'],
    ['38119']]

from itertools import chain
from collections import Counter
items = Counter(chain.from_iterable(lst))

for k, v in items.items():
     print(k, v) 


>>> 37772 2
>>> 38119 2
>>> 38120 1
>>> 38103-2807 1
>>> ...

推荐阅读