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

标签 python list

我试过使用 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})

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

关于python - 如何计算列表中唯一列表的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25255215/

相关文章:

python - 在 pandas 的 groupby 中滚动应用函数

python - 如何在 GAE 的搜索 API 中实现自定义拼写检查

python - 根据多个groupby计算总和

Python:list.sort() 查询当列表包含不同元素类型时

python - 如何准备一个包含整数、 float 和字符串的列表?

Python:多个函数调用附加到同一个列表

python - 将 Pip 和 Yolk 放置在虚拟环境内部还是外部?

c# - 在 C# 中使用 List<> 作为 BindingSource

python - 在不使用任何预定义的 Python 函数的情况下在列表中查找运行

python - 将列表转换为 pandas 数据框中的 numpy 数组