我试过使用 Counter 和 itertools,但由于列表不可用,所以它们不起作用。
我的数据如下所示:[ [1,2,3], [2,3,4], [1,2,3] ]
我想知道列表 [1,2,3] 出现了两次,但我不知道该怎么做。我正在考虑将每个列表转换为一个元组,然后对其进行哈希处理。有没有更好的办法?
最佳答案
>>> from collections import Counter
>>> li=[ [1,2,3], [2,3,4], [1,2,3] ]
>>> Counter(str(e) for e in li)
Counter({'[1, 2, 3]': 2, '[2, 3, 4]': 1})
只要每个子列表中没有嵌套可变变量(例如 [ [1,2,3], [2,3,4,[11,12]],您声明的方法也适用[1,2,3] ]
:
>>> Counter(tuple(e) for e in li)
Counter({(1, 2, 3): 2, (2, 3, 4): 1})
如果您确实在子列表列表中嵌套了其他不可用的类型,请使用 str
或 repr
方法,因为它也处理所有子列表。或者递归地将所有内容转换为元组(更多工作)。
关于python - 如何计算列表中唯一列表的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25255215/