2014-03-12 60 views
0

在Python中发现特有的元素出现在列表中,我用查找列表独特元素的出现在python

import collections 

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

但B在OCCURENCES b=[('8',3),('7',2)]的顺序进行排序。但是想要排序b。我怎样才能做到这一点?

+0

不,'b'是**不**排序。顺序是任意的。您认为发生的任何排序在这里都是巧合。第二个值是*数字*,而不是字符串;输出是'[('8',3),('7',2)]'。 –

+0

为什么你觉得你需要以任意顺序列出'Counter()'内容来查找唯一元素的出现? –

+0

我不想要任意的顺序。我想按出现顺序输出为'b = [('7',2),('8',3)]' – Dheerendra

回答

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 

then:

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