2015-11-27 204 views
0

我對計算非常陌生,並且我們被要求創建一個索引,該索引一次讀取一行文本,記下特定單詞以及它們出現在哪些行上。但是,我設法做到這一點,如果一個單詞不止一次出現在同一行上,它會打印兩次,這不適用於我的測試。刪除字典中的重複條目

line = 1 
x = raw_input ("Type in line 1 of the paragraph: ").lower() 
text = [] 
d = {} 

while x != ".": 
    x = convert_sentence(x) 
    text = [x] 
    text = string.join(text) 
    text = string.split(text) 
    for word in text: 
     if word in d: 
      d[ word ] += [line] 
     else: 
      d[ word ] = [line] 
    x = raw_input ("Enter a full stop to stop: ").lower() 
    line += 1 
print "the index is" 
for index in d: 
    print index, ":", d[ index ] 

這是當我運行它產生的輸出:

the index is: 
blow : [1, 1] 
north : [2, 2] 
brisk : [1] 
youth : [2] 
yesteryear : [4] 
wind : [1, 3, 4] 

能否請你幫我找出我做錯了嗎?

+0

附加繼續d [文字]後+ =行 –

+0

只是檢查'在d [文字]如果不是線',如果是添加它。簡單。 –

回答

0

你只需要檢查你發現的行是否已經被添加到條目。爲此,您需要檢查if not line in d[word]。此外,要將元素添加到list,您可以使用.append()方法,該方法比+運算符更易於理解。

下面是正確的代碼:

line = 1 
x = raw_input ("Type in line 1 of the paragraph: ").lower() 
text = [] 
d = {} 

while x != ".": 
    x = convert_sentence(x) 
    text = [x] 
    text = string.join(text) 
    text = string.split(text) 
    for word in text: 
     if word in d: 
      if not line in d[word]: 
       d[word].append(line) 
     else: 
      d[word] = [line] 
    x = raw_input ("Enter a full stop to stop: ").lower() 
    line += 1 
print "the index is" 
for index in d: 
    print index, ":", d[index] 
+0

非常感謝你我真的很感激! –

+0

@AlexHarrisonT歡迎您!如果我的答案解決了您的問題,請將其標記爲正確,以便您的問題得到解決,未來的用戶將從中受益。 –