如何计算列表中唯一列表的数量?

use*_*351 0 python list

我尝试过使用Counter和itertools,但由于列表不可用,它们不起作用.

我的数据如下:[[1,2,3],[2,3,4],[1,2,3]]

我想知道列表[1,2,3]出现两次,但我无法弄清楚如何做到这一点.我想把每个列表转换成一个元组,然后用它进行散列.有没有更好的办法?

daw*_*awg 6

>>> 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})
Run Code Online (Sandbox Code Playgroud)

只要每个子列表中没有嵌套的可变项,您声明的方法也会起作用(例如[ [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})
Run Code Online (Sandbox Code Playgroud)

如果您确实有其他不可用类型嵌套在子列表列表中,请使用strrepr方法,因为它也处理所有子列表.或者递归地将所有转换为元组(更多工作).