我有一個列表:如何獲得我列表中每個單詞的計數?
X = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']
,並希望輸出:
{'cztery': 1, 'dwa': 2, 'raz': 3, 'trzy': 2}
我有一個列表:如何獲得我列表中每個單詞的計數?
X = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']
,並希望輸出:
{'cztery': 1, 'dwa': 2, 'raz': 3, 'trzy': 2}
您可以使用dictionary comprehension:
>>> lst = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']
>>> {x:lst.count(x) for x in set(lst)}
{'raz': 3, 'cztery': 1, 'dwa': 2, 'trzy': 2}
>>>
,或者您可以使用collections.Counter
:
>>> from collections import Counter
>>> Counter(lst)
Counter({'raz': 3, 'dwa': 2, 'trzy': 2, 'cztery': 1})
>>>
第二種解決方案可能是您想要的,因爲它與理解相同,效率更高,並且還使用Counter
類,該類提供了許多優秀的工具(例如, most_common
和subtract
)。
@Downvoter - 請留下你低估的理由。我關心我的工作質量。因此,如果您發現我的文章有問題,請告訴我,以便我可以解決它。 – iCodez
另一種方法使用STDLIB:
In [6]: from collections import Counter
In [7]: l = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']
In [8]: dict(Counter(l).items())
Out[8]: {'cztery': 1, 'dwa': 2, 'raz': 3, 'trzy': 2}
錯誤,downvoted是什麼原因?有時愛SE社區:P –
只是展示版本groupby
布賴恩建議。
import itertools
data = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']
print({k:len(list(v)) for k, v in itertools.groupby(sorted(data))})
這是複雜的'O(NLogN)'。 –
這是一個示範。我沒有說這是一個很好的解決方案。 :-) – Matthias
itertools.groupBy – Brian
@Brian你可以寫一個答案證明? – tacaswell
@tcaswell:我剛剛用'groupby'寫了一個答案。 – Matthias