我尝试过使用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})
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)
如果您确实有其他不可用类型嵌套在子列表列表中,请使用str或repr方法,因为它也处理所有子列表.或者递归地将所有转换为元组(更多工作).
| 归档时间: |
|
| 查看次数: |
1552 次 |
| 最近记录: |