【发布时间】:2016-12-06 03:50:28
【问题描述】:
问题来了:
使用以下输入和输出编写一个名为 wordPositions() 的函数。 输入:s,一个由大小写字母和空格组成的字符串。 返回:一个字典,其中 s 中的每个不同单词都是一个键,对应的值是该单词在 s 中出现的位置的列表。无论大小写如何,单词都将被视为相同。也就是说,“是”和“是”是同一个词。 以下是正确输出的示例。
s = 'One fish two fish red fish blue fish'
wp = wordPositions(s)
print(wp)
{'two': [2], 'one': [0], 'red': [4], 'fish': [1, 3, 5, 7], 'blue': [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'))
问题是我的输出:
{'two': 2, 'blue': 6, 'red': 4, 'fish': 1, 'One': 0}
如何让它看起来像教授的?另外,请注意在我的输出中,单词“fish”仅显示它的一个位置,尽管它在字符串中重复出现。如何让 Python 显示“鱼”的多个位置?
【问题讨论】:
-
您的字典需要保存列表。对于这个,您可能需要查看
defaultdict以允许您的字典条目默认为列表。接下来是使用enumerate进行迭代。如果您使用索引(没有start参数),它将继续找到相同的索引,更不用说它会给您的代码On^2时间复杂度。考虑for i, word in enumerate('One fish two fish red fish blue fish'.split()): print(i, word)
标签: python string python-3.4