这里是问题:如何找到字符串中的单词的位置?
用下面的输入和输出编写一个名为wordPositions()的函数。 输入:s,由大写和小写字母和空格组成的字符串。 Return:一个字典,其中s中的每个不同单词都是一个关键字,相应的值是该单词出现位置s的列表。无论大写字母是什么,字都应该被视为相同。也就是说,“是”和“是”是同一个词。 以下是正确输出的示例。
s = 'One fish two fish red fish blue fish'
wp = wordPositions(s)
print(wp)
{ '2':[2], '一':[0], '红':[4], '鱼':[1,3,5,7],“蓝色':[6]}
现在,这里是我的代码:
def wordPositions(s):
aDict = {}
words = s.split(' ')
for item in words:
position = words.index(item)
aDict[item] = position
print(aDict)
print(wordPositions('One fish two fish red fish blue fish'))
的问题是我的输出:
{' 两化“:2, '蓝':6, '红':4 ,'fish':1,'One':0}
如何让它看起来像教授的?另外,请注意,在我的输出中,'fish'这个单词只显示了它的一个位置,尽管它在字符串中重复了一遍。我如何让Python显示'鱼'的多个位置?
你的字典需要保存列表。对于这一个,你可能想看看'defaultdict'来让你的字典条目默认为列表。接下来的事情是迭代使用'枚举'。如果你使用索引(没有'start'参数),它会继续找到相同的索引,更不用说它会给你的代码'On^2'的时间复杂度。考虑'为我,在枚举字('一条鱼两条鱼红色鱼蓝色fish'.split()):打印(我,单词)' –