简单的Python2.7代码有一些问题:“';列表';对象没有属性';查找'&引用;
此代码的目的是返回一个字典,该字典以较大的字符串形式列出子字符串的起始索引 例如,match([“a”,“b”,“c”,“d”],“abc”)将返回:{“a”:0,“b”:1,“c”:2,“d”:-1}(其中-1是默认的空键) 这个问题的提示是find函数可以告诉您另一个字符串中某个子字符串的起始索引。这是正确的语法,对吗?我的字符数组是strArray,y是我正在搜索的子字符串简单的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
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}