2016-05-23 10 views
3

私は解決できないロジックエラーに遭遇しました。 はここで独特の単語分割後プログラムでユニークな単語を扱うことができません

+0

ここではエラーはありません。「I」は文の3番目の単語です。なぜ私は 'I'を' 2'に置き換えたいのですか?それは第二のユニークな言葉ですか? – Mureinik

+1

はいはい何を言っているのですか!これが何を意味するのかを明確に述べていないことについて申し訳ありません。 – John

答えて

2

各単語に「一意のID」を割り当てる場合は、別のデータ構造でこれを管理する必要があります。

UniqueWords = [] 
for k in ThesentenceList: 
    if k in UniqueWords: 
     position = UniqueWords.index(k) 
    else: 
     position = len(UniqueWords) 
     UniqueWords.append(k) 
    position = position + 1 
    position = str(position) 
    TheList.append(position) 
+0

ああ、それを忘れてしまった – John

0

あなたのリストあなたが単語インデックス値を割り当てるために使用["Hello", "Hello", "I", "Hello"]では処理できません。基本的に私のコード

Mysentence = MySentence 
print(Mysentence) 
MysentenceList = Mysentence.split() 
List = [] 

for k in MysentenceList: 
    position = MysentenceList.index(k) 
    position = position + 1 
    position = str(position) 
    List.append(position) 

です。

"Hello"の最初のインスタンスはインデックス0です。 "I"の最初のインスタンスはインデックス2です。シーケンスにギャップがなくゼロから数えて "ユニークワードID"を割り当てる場合は、重複する単語を管理するためにID割り当てアルゴリズムを変更する必要があります。

私はPython辞書のようなものを使って、ユニークな単語を見つけていくことを提案しています(ハッシュマップなので、長い入力ではかなり遅くなる「インデックス」でリストの反復を避けます)。

0

list.index(item)は、itemの最初のインスタンスの位置をlistに指定しています。 "Hello"の最初のインスタンスは0の位置にありますが、その位置に1が追加されているため、毎回1つずつレポートされます。 "私"は2位に位置しているので、報告しています。3

関連する問題