次のような単語で辞書を作成する関数を作成しています。
{'b': ['b', 'bi', 'bir', 'birt', 'birth', 'birthd', 'birthda', 'birthday'],
'bi': ['bi', 'bir', 'birt', 'birth', 'birthd', 'birthda', 'birthday'],
'birt': ['birt', 'birth', 'birthd', 'birthda', 'birthday'],
'birthda': ['birthda', 'birthday'],
'birthday': ['birthday'],
'birth': ['birth', 'birthd', 'birthda', 'birthday'],
'birthd': ['birthd', 'birthda', 'birthday'],
'bir': ['bir', 'birt', 'birth', 'birthd', 'birthda', 'birthday']}
これは次のようになります。
def add_prefixs(word, prefix_dict):
lst=[]
for letter in word:
n=word.index(letter)
if n==0:
lst.append(word[0])
else:
lst.append(word[0:n])
lst.append(word)
lst.remove(lst[0])
for elem in lst:
b=lst.index(elem)
prefix_dict[elem]=lst[b:]
return prefix_dict
「誕生日」のような単語にはうまく機能しますが、文字が繰り返されると問題が発生します... たとえば、「こんにちは」.
{'h': ['h', 'he', 'he', 'hell', 'hello'], 'hell': ['hell', 'hello'], 'hello': ['hello'], 'he': ['he', 'he', 'hell', 'hello']}
インデックスが原因であることはわかっていますが(Pythonは文字が最初に表示されたインデックスを選択します)、解決方法がわかりません。はい、これは私の宿題です。皆さんから学ぼうとしています :)