Skip to main content
 首页 » 编程设计

Python:如何从包含重复项的列表列表中返回具有计数的不同项目列表

2025年05月04日12lori

我在列表中嵌套了列表。这是我尝试使用列表的迷你预览来计算单个嵌套列表的数量的代码:

count_list = [['a', 'b'],['d', 'e'], ['e'], ['c'], ['a', 'b'], ['c']] 
    distinct_list = [] 
    count_list.sort() 
    for x in count_list: 
        if x not in distinct_list:  
            distinct_list.append(x)        
    for z in distinct_list: 
        for y in count_list: 
            if y == z: 
                print(z, count_list.count(z)) 

我试图让输出成为一个字典/列表,其中只有不同的嵌套列表及其计数,以便我可以按计数对结果进行排序。列表不采用两个值,因此我正在考虑将其设为字典以便于存储。 这些是我从上面的代码中得到的结果。

(['a', 'b'], 2) 
(['a', 'b'], 2) 
(['c'], 2) 
(['c'], 2) 
(['d', 'e'], 1) 
(['e'], 1) 

我希望输出只为每个不同的列表及其各自的计数提供一行(而不是为上面的当前输出中看到的同一列表提供多行)。有什么想法吗?

请您参考如下方法:

你应该使用 collections.Counter() :

>>> count_list = [['a', 'b'],['d', 'e'], ['e'], ['c'], ['a', 'b'], ['c']] 
>>> import collections 
>>> result = collections.Counter(tuple(x) for x in count_list) 
>>> print(result) 
Counter({ 
    ('c',): 2, 
    ('a', 'b'): 2, 
    ('d', 'e'): 1, 
    ('e',): 1 
})