首页 > 解决方案 > 为什么这个 Python 字典理解不能用于计算 input() 中的单词?

问题描述

我必须计算一个词在一个句子中使用了多少次。我找到了解决方案,但是我希望代码更简洁,并希望使用字典理解来解决它。有人可以帮我理解以下代码有什么问题吗?

user_input = input().lower().split()
usage_dict = dict()
usage_dict = {word:usage_dict.get(word, 0) + 1 for word in user_input}
print(usage_dict)

输入 :a aa abC aa ac abc bcd a

输出 :{'a': 1, 'aa': 1, 'abc': 1, 'ac': 1, 'bcd': 1}

预期输出:{'a': 2, 'aa': 2, 'abc': 2, 'ac': 1, 'bcd': 1}

标签: python

解决方案


问题

dict-comprehension 结束后usage_dict创建字典,没有 dict 临时状态的概念,所以总是给 0usage_dict.get(word, 0)

这仅在 for 循环中起作用:

usage_dict = {}
for word in user_input:
    usage_dict[word] = usage_dict.get(word, 0) + 1

解决方案

采用list.count()

usage_dict = {word: user_input.count(word) for word in set(user_input)}

使用collections.Counterwhich 使用与上面相同的 for 循环

usage_dict = Counter(user_input)

推荐阅读