2016-05-23 10 views
3

Ich bin in einen logischen Fehler geraten, den ich nicht lösen kann und möchte etwas Hilfe dazu. Hier ist mein CodeProgramm kann nicht mit eindeutigen Wörtern umgehen

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) 

Grundsätzlich nicht eindeutigen Wörter verarbeiten kann

+0

So gibt es keinen Fehler hier - 'I 'ist das dritte Wort im Satz. Warum möchtest du "I" durch "2" ersetzen? Meinst du, es ist das zweite * einzigartige * Wort? – Mureinik

+1

Ja ja das, was ich versuche zu sagen! Tut mir leid, dass ich nicht klar gesagt habe, was das zu tun ist – John

Antwort

2

Wenn Sie jedem Wort eine "eindeutige ID" zuweisen möchten, müssen Sie dies in einer anderen Datenstruktur verwalten. Eine andere Liste würde den Trick machen:

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

ah vergiss es, ich habe es gelöst – John

0

Ihre Liste nach der Trennung ist ["Hello", "Hello", "I", "Hello"] die Sie dann das Wort Indexwert zuweisen verwenden.

Die erste Instanz von "Hello" ist Index 0, die erste Instanz von "I" ist Index 2. Wenn Sie eine "eindeutige Wort ID" von Null ohne Lücken in der Reihenfolge, die Sie gehen, zählen möchten müssen Sie Ihren ID-Zuweisungsalgorithmus ändern, um die doppelten Wörter zu verwalten.

Ich würde vorschlagen, etwas wie ein Python-Wörterbuch zu verwenden, um die einzigartigen Wörter zu verfolgen, wie Sie sie finden (es ist eine Hash-Map, vermeidet also Listen-Iteration mit "Index", die ziemlich langsam mit langen Eingaben wird).

0

list.index(item) gibt Ihnen die Position der ersten Instanz item in list. Die erste Instanz von "Hello" befindet sich in Position 0, aber Sie fügen der Position 1 hinzu, sodass jedes Mal 1 gemeldet wird. "I" befindet sich in Position 2 und meldet daher 3.

Verwandte Themen