在python中查找列表中出现的唯一元素
为了在python中查找惟一元素在列表中的出现情况,我使用了在python中查找列表中出现的唯一元素,python,python-3.x,Python,Python 3.x,为了在python中查找惟一元素在列表中的出现情况,我使用了 import collections a='77888' b=list(collections.Counter(a).items()) 但是b是按照出现的顺序排序的b=[('8',3),('7',2)]。但是需要未排序的b。如何实现这一点?要在列表a中查找唯一的项,请执行以下操作: from collections import Counter unique_items = [item for item, count in Co
import collections
a='77888'
b=list(collections.Counter(a).items())
但是b是按照出现的顺序排序的
b=[('8',3),('7',2)]
。但是需要未排序的b
。如何实现这一点?要在列表a
中查找唯一的项,请执行以下操作:
from collections import Counter
unique_items = [item for item, count in Counter(a).items() if count == 1]
如果输入已排序,则可以使用itertools.groupby()
:
如果希望以与输入相同的顺序获取项目及其频率,可以定义OrderedCounter
:
from collections import Counter, OrderedDict
class OrderedCounter(Counter, OrderedDict):
pass
然后:
否,
b
未排序。命令是任意的。你认为发生的任何排序都是巧合。第二个值是数字,而不是字符串;输出是[('8',3),('7',2)]
。为什么您认为需要按任意顺序列出计数器()
内容以查找唯一元素的出现?我不希望按任意顺序。我希望输出为b=[('7',2),('8',3)]
按照外观的顺序,您试图找到独特的元素;你能给出输入的例子,以及你想从中找到什么吗?首先,您的示例没有唯一的元素。这听起来像是在追求Y,但真正的问题是X,明白吗
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)]