比较列表中的列表并计算出现次数

时间:2019-05-29 01:26:50

标签: python

如果我有一个列表a,我想要一个函数f()

a = [[1,2,3],[1,2,3],[0,5,6],[0,5,4]]

给出输出:

out = f(a)
out
>> {[1,2,3]:2,[0,5,6]:1,[0,5,4]:1]}

顺序也很重要,我需要它完全相似 我本打算使用Counter,但它不适用于列表。设置也不可行。除了使用Counter之类的方法从头开始做全部事情之外,是否还有某种“更轻松”的方法?

1 个答案:

答案 0 :(得分:5)

由于字典键不能包含可变对象,因此您需要将其转换为元组(不可变对象),然后执行Counter

from collections import Counter
a = [[1,2,3],[1,2,3],[0,5,6],[0,5,4]]
print(Counter(map(tuple, a)))

哪个输出:

Counter({(1, 2, 3): 2, (0, 5, 6): 1, (0, 5, 4): 1})