单词是包含由空格分隔的不同单词的一个字符串。 这是我的代码:
def dictionary(words):
d={};
for i in words:
begin = 0;
while (words[i:i+1] != " "):
if (words[begin:i] in d):
d[words[begin:i]] += 1;
else:
d[words[begin:i]] = 1;
begin = i + 1;
return d;
,不幸的是我收到了以下错误消息:
File "C:/Python27/projectfiles/dictionary.py", line 5, in dictionary
while (words[i:i+1] != " "):
TypeError: cannot concatenate 'str' and 'int' objects
任何帮助?或想法?提前谢谢!
答案 0 :(得分:0)
单词是str
个对象吗?然后尝试以下方法:
from collections import Counter
def dictionary(words):
return Counter(words.split())
collections.Counter
类型已计算项目在list
内的时间。 split
方法将str
转换为str
的列表除以作为参数的str
,并且默认为空格。您可能需要自己处理逗号和圆点,但它们在您的示例中也没有处理。
示例:
dictionary("Be water my friend, be water and be fluid.")
输出:
Counter({'water': 2, 'be': 2, 'Be': 1, 'and': 1, 'my': 1, 'fluid.': 1, 'friend': 1})
它作为普通dict
工作。在您的情况下,订单可能会有所不同。
答案 1 :(得分:0)
不幸的是,没有输入,我无法猜出你当前的功能有什么问题。但是,我可以提供一种执行相同功能的方法。
你应该在计算单词时(删除句子的开头和结尾)来删除标点和套管。此外,collection的计数器是一个已经写好的精彩课程。您甚至可以将其投射到字典中,然后繁荣您有一个包含所需项目的字典。
from collections import Counter
import re
words = "I like to walk on the beach and enjoy life. Beach walks are fun."
def dictionary(words):
return Counter(re.sub("([^a-z ])", "", words.lower()).split())
print( dictionary(words) )