2016-04-22 56 views
1

我需要保存字符串中的順序,其中每個字用第一次出現的(1基)索引來標識。如何保存字符串的順序?(Python 3.)

對於樣品輸入

sentence = "i am what i am am" 

期望的輸出是預先

order = "1 2 3 1 2 2" 

感謝。 :)

+0

所以你從左至右遞增的數字,如果某個單詞已經在字符串中分配給每個字,它獲得與第一次相同的數字? –

+0

如果你已經分享了一些關於你已經試圖解決這個問題的更多信息,那將會很好。總的來說,如果你自己做出一些努力,你的問題會得到更好的迴應。 – timgeb

回答

1

使用字典來跟蹤在那裏一個詞已經首次出現的:

s = 'i am what i am am' 
seen = {} 
result = [] 
for index, word in enumerate(s.split(), 1): 
    result.append(seen.setdefault(word, index)) 
result = ' '.join(map(str, result)) 

print(result) # 1 2 3 1 2 2 
+0

比我快...:/ –

+0

或列表理解:'result = [seen.setdefault(word,index)for index,enumerate(s.split(),1)]' – zondo

+0

@zondo我是對於帶有副作用的列表解讀有點猶豫,我覺得這條線會立即做得太多。 – timgeb