简单的Python2.7代码有一些问题:“';列表';对象没有属性';查找'&引用;

简单的Python2.7代码有一些问题:“';列表';对象没有属性';查找'&引用;,python,string,python-2.7,list,dictionary,Python,String,Python 2.7,List,Dictionary,此代码的目的是返回一个字典,该字典以较大的字符串形式列出子字符串的起始索引 例如,match([“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 s

此代码的目的是返回一个字典,该字典以较大的字符串形式列出子字符串的起始索引

例如,match([“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

列表没有
find
方法。这是特定于字符串的;列表只有
index
。我不知道为什么。我将方法切换到index,结果并没有达到我预期的结果。我在测试中得到了-1分,而我本应该得到0st的。这让我非常困惑,但它是正确的。因此find方法得到了-1分till适用于strArray?只是它需要用它来自的字符串来定向?为什么
strArray.find
(或
strArray.index
)?你想要字符的索引(a、b、c、d)在
word
中,而不是在
strArray
中?@grilam14,你最好考虑:
匹配([“a”、“b”、“c”、“d”]、“cba”)
。在原始示例中,a、b、c以相同的顺序出现;这可能会导致混淆。
>>> matchUp(["a", "b", "c", "d"], "abc")
{'a': 0, 'c': 2, 'b': 1, 'd': -1}