在Python,我有喜歡的項目清單:Python:如何獲得列表中項目的排序次數?
mylist = [a, a, a, a, b, b, b, d, d, d, c, c, e]
而且我想輸出是這樣的:
a (4)
b (3)
d (3)
c (2)
e (1)
我怎麼能輸出數量和項目的排行榜中一個列表?我不太關心效率,只是有效的任何方式:)
謝謝!
在Python,我有喜歡的項目清單:Python:如何獲得列表中項目的排序次數?
mylist = [a, a, a, a, b, b, b, d, d, d, c, c, e]
而且我想輸出是這樣的:
a (4)
b (3)
d (3)
c (2)
e (1)
我怎麼能輸出數量和項目的排行榜中一個列表?我不太關心效率,只是有效的任何方式:)
謝謝!
from collections import defaultdict
def leaders(xs, top=10):
counts = defaultdict(int)
for x in xs:
counts[x] += 1
return sorted(counts.items(), reverse=True, key=lambda tup: tup[1])[:top]
所以這個功能使用defaultdict
算在我們的名單中的每個條目的數量。然後我們根據計數將每一對條目和它的數量進行降序排序。然後,我們採取top
條目數並返回。
所以,現在我們可以說
>>> xs = list("jkl;fpfmklmcvuioqwerklmwqpmksdvjioh0-45mkofwk903rmiok0fmdfjsd")
>>> print leaders(xs)
[('k', 7), ('m', 7), ('f', 5), ('o', 4), ('0', 3), ('d', 3), ('i', 3), ('j', 3), ('l', 3), ('w', 3)]
完美。謝謝 – AP257 2010-02-18 18:15:29
兩班輪:
for count, elem in sorted(((mylist.count(e), e) for e in set(mylist)), reverse=True):
print '%s (%d)' % (elem, count)
你嘗試過什麼? SO上有大量的愚蠢行爲。你有沒有試過尋找他們? – SilentGhost 2010-02-18 18:09:31
是的,我有。抱歉,我可能會使用錯誤的搜索字詞,但找不到所需的任何內容。我一直在試驗,但沒有很多...道歉 – AP257 2010-02-18 18:12:20
dupe:http://stackoverflow.com/questions/2148480/can-pythons-list-comprehensions-ideally-do-the-equivalent-of-count-組/ 2148555#2148555 – SilentGhost 2010-02-18 18:12:46