2016-11-13 4 views
1

このコードの目的は、大きな文字列の部分文字列の先頭インデックスをリストする辞書を返します。単純なpython 2.7のコードに問題があります: "'list'オブジェクトに 'find'属性がありません"

例。 {"a":0、 "b":1、 "c":2、 "d": - "match"を返すと、matchUp(["a"、 "b"、 "d"]、 "abc" 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 
+1

リストは 'find'メソッドを持っていません。これは文字列に固有です。リストには 'index'しかありません。どうしてか分かりません。 – user2357112

+0

私はこの方法をインデックスに切り替えました。私が期待していた結果で終わることはありませんでした。私は0を得たはずだったときに私のテストのために全面的に-1を得ました – grilam14

答えて

2

あなたはstrArray.findword.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} 
+0

それは私にとって非常に混乱していますが、それは正しいです。そのため、findメソッドはstrArrayにも適用されますか?それは、それが由来する文字列を指向させる必要があることだけです。 – grilam14

+0

なぜ 'strArray.find'(または' strArray.index')ですか? 'strArray'ではなく、' word'の文字のインデックス(a、b、c、d)が必要です。 ? – falsetru

+0

ああ、私はそれを後方に持っていた。まだPythonに慣れています。 – grilam14

関連する問題