2016-12-06 75 views
0

我的函數將一個字符串作爲輸入,它是文件的名稱,並且應該返回一個字典。字典將具有鍵/值對,其中鍵是對應於字長度的整數,並且值是具有該長度的文件中出現的字的數量。具有相同長度的單詞的出現

該文件包含以下句子:

and then the last assignment ended and everyone was sad 

所以理論上返回的措辭是這樣的:

{ 3:5, 4:2, 5:1, 8:1, 10:1} 

到目前爲止,我有這樣的:

""" 
COMP 1005 - Fall 2016 
Assignment 10 
Problem 1 
""" 
def wordLengthStats(filename): 
    file = open(filename, 'r') 
    wordcount={} 
    for line in file.read().split(): 
     if line not in wordcount: 
      wordcount[line] = 1 
     else: 
      wordcount[line] += 1 
    for k,v in wordcount.items(): 
     print (k, v) 
    return None 

def main(): 
    ''' 
    main method to test your wordLengthStats method 
    ''' 
    d = wordLengthStats("sample.txt") 
    print("d should be { 3:5, 4:2, 5:1, 8:1, 10:1} ") 
    print("d is", d) 

if __name__ == '__main__': 
    main() 

的句子只是一個例子,我需要做到這一點,以便任何輸入都能正常工作。任何幫助解決這個問題將不勝感激。

+0

'如果沒有線在單詞計數:' - 你打算'如果len(line)不在wordcount中:'?鑰匙應該是單詞*長度*,而不是單詞。 –

+0

那麼問題是什麼? – martineau

回答

0

對於在句子中的每一個字,你需要添加到字典中的條目,其中詞的長度是關鍵:

def wordLengthStats(filename): 
    file = open(filename, 'r') 
    wordcount={} 
    for word in file.read().split(): 

     key = len(word) 

     if key not in wordcount: 
      wordcount[key] = 1 
     else: 
      wordcount[key] += 1 

    for k,v in wordcount.items(): 
     print (k, v)        
    return None 
+0

謝謝!它的工作原理 – comp1005

+0

您不關閉文件。你應該使用'with'塊。 –

+0

當然,只需編輯代碼的相關部分即可 – elelias

相關問題