在Python中按重复排序列表

问题描述

| 我有一个包含多个重复项的列表。我正在尝试通过给重复次数最多的项目排序来对列表进行排序。 所以它会变成这个
[\'a\',\'b\',\'c\',\'a\',\'d\']
进入这个
[\'a\',\'d\']
    

解决方法

        
>>> from collections import Counter
>>> [k for k,v in Counter([\'a\',\'b\',\'c\',\'a\',\'d\']).most_common() for i in xrange(v)]
[\'a\',\'d\']
这可能更容易理解
>>> counter = Counter([\'a\',\'d\'])
>>> sorted(counter.elements(),key=counter.get,reverse=True)
[\'a\',\'d\']
    ,        
d = {}
for a in l:
    d[a] += d.setdefault(a,0)

l.sort(key = lambda k: (d[k],k),reverse = True)
    ,        
[v for (v,c) in sorted(((x,list(y)) for (x,y) in
  itertools.groupby(sorted([\'a\',\'d\']))),key=lambda x: len(x[1]),reverse=True) for z in c]
编辑: 现在以
sum()
sum((c for (v,reverse=True)),[])
    ,        
l = [\'a\',\'d\']
sorted_list = [item for item in sorted(l,key=lambda x: l.count(x),reverse=True)]
尽管这是一个简单的解决方案,但是请注意使用大列表时对每个元素进行计数的复杂性。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...