如何计算列表中的元素并返回一个字典?

时间:2015-11-25 01:29:11

标签: python dictionary

假设我有一个

列表
L = ['hello', 'hello', 'hi', 'hello', 'hello']

我想计算列表中有多少'hello''hi'。结果是'hello': 4'hi': 1

我如何以字典形式实现此结果?我的教授还没有解决这个问题,所以我不确定如何从列表转换为字典。

2 个答案:

答案 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)