0

我有一个关于给定文件编写字典的问题。我已经完成了编码,但我真的很困惑。参数名称为“ load_words: (file)”,预期输出为“ dict of {str: list of strs}”。

给出的问题描述如下:

“打开的文件每行包含一个小写单词。返回一个字典,其中每个键都是一个小写字母,每个值都是文件中以该字母开头的单词列表。只有一个或多个单词来自以开头的文件在字典中显示为键。"

我正在尝试编写我的代码

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 回答