假设我有一个
列表L = ['hello', 'hello', 'hi', 'hello', 'hello']
我想计算列表中有多少'hello'
和'hi'
。结果是'hello': 4
,'hi': 1
。
我如何以字典形式实现此结果?我的教授还没有解决这个问题,所以我不确定如何从列表转换为字典。
答案 0 :(得分:1)
使用计数器:
b.NoUsager = @noUsager
或者,您可以这样做:
>>> from collections import Counter
>>> def how_many(li): return Counter(li)
...
>>> how_many(['hello', 'hello', 'hi', 'hello', 'hello'])
Counter({'hello': 4, 'hi': 1})
或者,您可以这样做:
>>> li=['hello', 'hello', 'hi', 'hello', 'hello']
>>> {e:li.count(e) for e in set(li)}
{'hi': 1, 'hello': 4}
答案 1 :(得分:0)
不使用外部模块而只使用=WEEKDAY($A$2)=2
,尽管使用dict理解会有一些冗余:
count
如果您被允许使用外部模块而不需要自己实现所有内容,则可以使用通过defaultdict
模块提供的Python collections
:
d = {itm:L.count(itm) for itm in set(L)}
给你:
#!/usr/bin/env python3
# coding: utf-8
from collections import defaultdict
word_list = ['hello', 'hello', 'hi', 'hello', 'hello']
d = defaultdict(int)
for word in word_list:
d[word] += 1
print(d.items())
编辑:
如评论中所述,您可以像这样使用Counter
,这会更容易:
dict_items([('hi', 1), ('hello', 4)])
给你:
#!/usr/bin/env python3
# coding: utf-8
from collections import Counter
word_list = ['hello', 'hello', 'hi', 'hello', 'hello']
c = Counter(word_list)
print(c)