rec*_*gle 2 python sorting list
我有一个包含多个重复项目的列表.我正在尝试通过提供重复次数最多的项目对列表进行排序.
所以它会扭转这一局面
['a', 'b', 'c', 'a', 'b', 'a', 'd']
Run Code Online (Sandbox Code Playgroud)
进入这个
['a', 'a', 'a', 'b', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)
d = {}
for a in l:
d[a] += d.setdefault(a,0)
l.sort(key = lambda k: (d[k],k), reverse = True)
Run Code Online (Sandbox Code Playgroud)
>>> from collections import Counter
>>> [k for k,v in Counter(['a', 'b', 'c', 'a', 'b', 'a', 'd']).most_common() for i in xrange(v)]
['a', 'a', 'a', 'b', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)
这可能更容易理解
>>> counter = Counter(['a', 'b', 'c', 'a', 'b', 'a', 'd'])
>>> sorted(counter.elements(), key=counter.get, reverse=True)
['a', 'a', 'a', 'b', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)