如何通过第一个元素的计数对列表列表进行排序?例如,如果我在下面有以下列表,则希望对列表进行排序,以使所有“乔治亚大学”条目都排在首位,然后是“密歇根大学”条目,然后是“佛罗里达大学”条目。
l = [['University of Michigan','James Jones','phd'],
['University of Georgia','Anne Greene','ba'],
['University of Michigan','Frank Kimball','ma'],
['University of Florida','Nate Franklin','ms'],
['University of Georgia','Sara Dean','ms'],
['University of Georgia','Beth Johnson','bs']]
from collections import Counter
c = Counter(item[0] for item in l)
print sorted(l, key = lambda x: -c[x[0]])
输出量
[['University of Georgia', 'Anne Greene', 'ba'],
['University of Georgia', 'Sara Dean', 'ms'],
['University of Georgia', 'Beth Johnson', 'bs'],
['University of Michigan', 'James Jones', 'phd'],
['University of Michigan', 'Frank Kimball', 'ma'],
['University of Florida', 'Nate Franklin', 'ms']]
香草字典版本:
c = {}
for item in l:
c[item[0]] = c.get(item[0], 0) + 1
print sorted(l, key = lambda x: -c[x[0]])
defaultdict
版:
from collections import defaultdict
c = defaultdict(int)
for item in l:
c[item[0]] += 1
print sorted(l, key = lambda x: -c[x[0]])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句