字符串中的字母索引 - python 2.7

时间:2012-11-27 15:55:52

标签: python string list function indexing

* 我正在编辑此问题因为我有一些错误,请再读一遍 * *

我正在构建一个用单词构建字典的函数,例如:

{'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

它适用于像#34;生日和#34;这样的词,但是当我有一个重复的字母时,我有一个问题......例如,"你好"。

{'h': ['h', 'he', 'he', 'hell', 'hello'], 'hell': ['hell', 'hello'], 'hello': ['hello'], 'he': ['he', 'he', 'hell', 'hello']}

我知道它是因为索引(python选择字母第一次出现的索引)但我不知道如何解决它。是的,这是我的作业,我真的想向你们学习:)

谢谢!

4 个答案:

答案 0 :(得分:1)

使用enumerate

for n, letter in enumerate(word):
    if n==0 or n==1:
        continue
    else:
        lst.append(word[0:n])

答案 1 :(得分:1)

a = 'birthday'
[a[:i] for i in range(2,len(a)+1)]

给出

['bi', 'bir', 'birt', 'birth', 'birthd', 'birthda', 'birthday']

所以你可以用简单的方式替换你的功能:

prefix_dict[word] = [word[:i] for i in range(2,len(word)+1)]

答案 2 :(得分:0)

假设变量a是一个简单的字符串(例如,“birthday”,“hello”),您可以使用:

for i in range(1,len(a)):
    print a[0:i+1]

答案 3 :(得分:0)

def add_prefixs(word, prefix_dict):
    prefix_dict[word] = [ word[:n+1] for n in range(1, len(word)) ]

更好的是:

def get_words(word):
    return [ word[:n+1] for n in range(1, len(word)) ]
prefix_dict[word] = get_words(word)

所以你保持你的功能“纯粹”。