python 计算嵌套列表中的重复项

python count duplicates in nexted list

我有一个嵌套列表,我正在尝试遍历每个列表并保存重复项。 我的列表如下所示:

conxn_out =  [
    ('6', [3, 4, 7, 13, 1, 3, 11, 1, 4, 11, 12, 1, 3, 4, 7]), 
    ('1', [7, 5, 9, 9, 11, 10, 2, 13, 3, 6, 11, 4, 7, 11, 12, 6, 4, 11, 12, 3, 6, 4, 7])
] 

我希望我的输出看起来像这样:

[
    ('6': {3:3, 4:3, 7:2, 1:3, 11:2}),
    ('1': {7:3, 9:2, 11:4, 3:2, 6:3, 4:3, 12:2})
]

所以我需要找到每个列表中的所有重复项,除了数字和计数。

我试过这个:

a = dict(Counter(conxn_out)) 

但我得到了 TypeError: Unhashable type: 'list'。我想那是因为 Counter 不适用于嵌套列表。

所以我想知道执行此操作的最佳方法是什么。如果我将它转换回字典会更容易吗?我不知道该怎么做。

使用list理解的一种方式:

from collections import Counter

# [(i, Counter(l)) for i, l in conxn_out]
[(i, dict(Counter(l))) for i, l in conxn_out]

输出:

[('6', {3: 3, 4: 3, 7: 2, 13: 1, 1: 3, 11: 2, 12: 1}),
 ('1', {7: 3, 5: 1, 9: 2, 11: 4, 10: 1, 2: 1, 13: 1, 3: 2, 6: 3, 4: 3, 12: 2})]

请注意,Counter 不必显式转换为 dict,因为 Counterdict 的子类:

issubclass(Counter, dict) == True