用于在我使用的python中查找列表中唯一元素的出现次数
import collections
a='77888'
b=list(collections.Counter(a).items())
但是b按出现顺序b=[('8',3),('7',2)]
排序。但是想要未分类b
。我怎样才能做到这一点?
答案 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)]