【发布时间】:2017-07-11 14:13:15
【问题描述】:
任务
给定一个字符串列表,其中可能包含一个或多个单词,我如何使用函数式编程来创建词频词典?通过函数式编程,我明确指的是map、filter 或reduce 的使用。此外,表格理解也属于函数式编程。
代码
def count_individual_words(word_list):
word_count = {x: y.count(x) for y in word_list for x in y.split()}
return word_count
tweets = ["I am a cat", "cat", "Who is a good cat"]
for i,v in count_individual_words(tweets).items():
print(i,v)
#Expected Output (dict)
# => {
# "I": 1,
# "am": 1,
# "a": 2,
# "cat": 3,
# "Who": 1,
# "is": 1,
# "good": 1 }
主要问题
主要问题出现在计算出现多次的单词时,例如 cat 或 a .问题是,它不是在当前字数上加一,而是用一覆盖字数。因此,最后,我得到的字典显示所有单词只出现一次。
如果有人提到使用 map、filter 或 reduce,我将非常感谢,因为我很好奇如何使用这些给定函数中的任何一个来完成这项任务。
【问题讨论】:
-
word_list是什么? -
你需要
collections.Counter
标签: python dictionary functional-programming itertools