Я кодировал программу, чтобы найти первый экземпляр каждого уникального слова в предложении, но мой код не работает. Я пытался найти решение, но не могу найти его. Любая помощь будет оценена.

csentence= input("Please enter a sentance, ") 
split_sentence=sentence.split
words=[ ]

for x, y in enumerate(words,1):
    if split_sentence .count(y)>1:
        words.append(sentence_split.index(y+1))
    else:
        words.append(x+1)

print(words)
0
k.davies 13 Янв 2017 в 15:37

4 ответа

Лучший ответ

Соответствует ли это вашим требованиям?

def get_word_positions(sentence):
    words = sentence.split()
    uniques = set(words)

    for word in uniques:
        yield word, words.index(word)

if __name__ == '__main__':
    sentence = input('Please enter a sentence: ')
    print(list(get_word_positions(sentence)))

Пример выполнения

Please enter a sentence: The fox is a silly fox indeed a
[('The', 0), ('a', 3), ('is', 2), ('indeed', 6), ('silly', 4), ('fox', 1)]
1
Tagc 13 Янв 2017 в 12:44
csentence= input("Please enter a sentence, ") 
split_sentence=csentence.split() # added brackets & changed sentence to csentence
word_index=[]
words=[]
for x,y in enumerate(split_sentence):   
    print(x,y)   
    if y not in words:
        words.append(y)        
        word_index.append(x)

print(word_index)
0
hfz 13 Янв 2017 в 12:56

Первый шаг - разделить слова на список:

words = sentence.split()

Затем вы можете использовать словарь для хранения первого вхождения каждого слова:

word_occurrences = {}
for word in words:
    word_occurrences[word] = words.index(word)

С участием:

sentence = "hi there hi to you there hi"

Это приводит к:

word_occurrences = {'hi': 0, 'you': 4, 'to': 3, 'there': 1}

Это может быть приведено в словарь, используя:

words = sentence.split()    
word_occurrences = {word:words.index(word) for word in words}
0
Nick A 13 Янв 2017 в 12:49

Сплит является функцией. Поэтому вам нужно использовать split ()

0
Glostas 13 Янв 2017 в 12:41