0

ファイルを指定して辞書を作成することについて 1 つ質問があります。コーディングはしましたが、本当に混乱しています。パラメータ名は " load_words: (file)" で、期待される出力は " dict of {str: list of strs}" です。

与えられた問題の説明は次のとおりです。

「開いているファイルには、1行に1つの小文字の単語が含まれています。各キーが単一の小文字であり、各値がその文字で始まるファイルの単語のリストである辞書を返します。で始まるファイルは辞書のキーとして表示されます。」

私は自分のコードを書こうとしています

def load_words(file1):

この質問にアプローチする方法が本当にわかりません。ヒントや完全な解決策さえあれば、助けていただければ幸いです。逆に作業することもできます。

注: 宿題の問題ではありません。2日後に中間試験があり、過去の中間試験をやろうとしているので助けてください

4

2 に答える 2

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
于 2012-07-16T02:19:27.680 に答える
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

それが役立つことを願っています

于 2012-07-16T02:18:20.547 に答える