2012-07-16 71 views
0

我有一個關於給文件編寫字典的問題。我已經完成了編碼,但是我很困惑。參數名稱爲「load_words: (file)」,預期輸出爲「dict of {str: list of strs}」。使用文件python的字典幫助

給出的問題的描述是:

「打開文件每行包含一個小寫單詞返回一個字典,其中每個鍵是一個小寫字母以及每個值的單詞列表。從以該字母開頭的文件,只有字母從文件中一個或多個單詞開始出現在字典中的鍵。「

我想寫我的代碼爲

def load_words(file1): 

我真的不知道如何處理這個問題任何幫助將不勝感激任何提示,甚至一個完整的解決方案,我可以倒退。

注意:不是一個家庭問題。我有2天的中期,我試圖做過去的期中考試,所以請幫助

回答

1

要做到這一點是使用collections.defaultdict如下的最簡單方法:

def load_words(file1): 
    answer = collections.defaultdict(list) 
    for line in file1: 
     line = line.strip() 
     if line not in answer[line[0]]: 
      answer[line[0]].append(line) 
    return answer 

但是,對於你的期中考試,你的教授可能期待這樣的回答:

def load_words(file1): 
    answer = {} 
    for line in file1: 
     line = line.strip() 
     if line[0] in answer: # or in answer.keys() or in answer.iterkeys() 
      if line not in answer[line[0]]: 
       answer[line[0]].append(line) 
     else: 
      answer[line[0]] = [line] # or answer[line[0]] = []; answer[line[0]].append(line) 
    return answer 

希望幫助

+1

我想,當你正在學習的基礎知識不使用defaultdict建議。您正在避免如何檢查密鑰 – jdi 2012-07-16 02:20:07

+0

的字典的概念。我已經添加了第二個解決方案。 – inspectorG4dget 2012-07-16 02:22:06

+0

這只是一個如何正確使用字典和列表值的例子?它不是解決實際問題的辦法。 – jdi 2012-07-16 02:22:47

2

剛寫出來的,你需要在僞做的邏輯,然後回到了它填寫真實代碼:

感謝@mhawke的指出,我誤解了問題

function load_words(file) 
    for each line in the file 
    get the first letter of the line (word) 
    lowercase the letter 
    if dict[letter] does not yet exist 
     create an empty list at this key 
    add word to list in dict with first letter as key 
    return the dict