在python中查找列表中唯一元素的出现次数

时间:2014-03-12 09:20:47

标签: python python-3.x

用于在我使用的python中查找列表中唯一元素的出现次数

import collections

a='77888'
b=list(collections.Counter(a).items())

但是b按出现顺序b=[('8',3),('7',2)]排序。但是想要未分类b。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

要查找列表a中的唯一项目:

from collections import Counter

unique_items = [item for item, count in Counter(a).items() if count == 1]

如果输入已排序,则可以使用itertools.groupby()

from itertools import groupby

unique_items = [key for key, group in groupby(a) if len(list(group)) == 1]

如果您希望以与输入中相同的顺序获取项目及其频率,则可以定义OrderedCounter

from collections import Counter, OrderedDict

class OrderedCounter(Counter, OrderedDict):
    pass

然后:

>>> list(OrderedCounter('77888').items())
[('7', 2), ('8', 3)]
>>> list(OrderedCounter('88877').items())
[('8', 3), ('7', 2)]