此代码的目的是返回一个字典,该字典列出较大字符串中子字符串的开始索引。

例如matchUp([[a],“ b,” c“,” d“],” abc“)将返回:{” a“:0,” b“:1,” c“:2,” d“:- 1}(以-1为默认空键)

这个问题的提示是,find函数可以告诉您另一个字符串中子字符串的开始索引。这是正确的语法,对吗?我在strArray中有字符数组,而y是我要搜索的子字符串。

def matchUp (strArray, word):
    index ={}
    for x in strArray:
        index [x]=-1
    for y in word:
       for x in index:
           if y in strArray:
              index [x]= strArray.find(y)

    return index

最佳答案

您需要调用word.find,而不是strArray.find

def matchUp (strArray, word):
    index = {}
    for ch in strArray:
        index[ch] = word.find(ch)  # <---
    return index


(无需使用嵌套循环)

用法示例:

>>> matchUp(["a", "b", "c", "d"], "abc")
{'a': 0, 'c': 2, 'b': 1, 'd': -1}

10-06 14:33