【问题标题】:Opening a text file and returning a dictionary打开一个文本文件并返回一个字典
【发布时间】:2020-04-28 04:13:43
【问题描述】:

我需要创建一个函数来打开具有给定名称的文件并返回一个字典,其中键是文件的第一部分,值是列表读数。 例如:

文件有: 昆士兰,30.5 新南威尔士州,20.3 南非,55 昆士兰,52.3 新南威尔士州,55.2

我创建了一个函数来打开文件,我如何编写一个 for 循环来遍历文件中的每一行并使用逗号将详细信息拆分为 2,然后将其作为新条目添加到我的空白字典中。结果需要显示为字典。

【问题讨论】:

  • 欢迎来到 StackOverflow!在提问时,您应该发布您已经编写的代码,以便更容易解决您的问题。它不必是完整的代码,只有您认为与您的问题相关的部分。这样,答案也可以更好地适应您现有的代码。
  • 您的文件似乎遵循 CSV 结构,您可以考虑将其作为 CSV 文件读取。此处的文档:docs.python.org/3/library/csv.html.

标签: python-3.x


【解决方案1】:

所以对于这个文本文件,

Queensland, 30.5 
NSW, 20.3 
SA, 55 
Queensland, 52.3 
NSW, 55.2

如果我是正确的,你想要这样的输出

{'Queensland': [30.5, 52.3], 'SA': [55.0], 'NSW': [20.3, 55.2]}

那么对应的Code就是:

def fun(file_name):
    my_dict = {}
    with open(file_name, 'r') as robj:
        lines = robj.readlines()

    for line in lines:
        processed_line = line.split(', ')
        if not my_dict.has_key(processed_line[0]):
            my_dict[processed_line[0]] =[]
        my_dict[processed_line[0]].append(float(processed_line[1]))

    return my_dict

if __name__ == "__main__":
    print(fun('textfile.txt'))

【讨论】:

  • 修复了代码。但是,它没有将字典键作为组返回,并且还显示为 {'Queensland, 30.5\n' : [], 'NSW, 20.3\n' : [], 'SA, 55\n' : [ ], '昆士兰州, 52.3\n' : [], '新南威尔士州, 55.2\n' : []}
  • 状态是键,读数是字典中的值
  • 如果状态是关键,阅读是价值,那么你的字典应该是这样的 {'Queensland: [30.5, 52.3] , 'NSW': [20.3, 55.2], 'SA': [55]} 。如果你想组合你的状态和阅读,那么你可以尝试这样的嵌套字典{Queensland: {30.5: [], 52.3: []}, NSW: {20.3: [], 55.2: []}, SA: {55: []}}
  • 我正在尝试输出第一个字典,但由于某种原因,它将字典作为嵌套字典返回。这是我想要的输出 {'Queensland: [30.5, 52.3] , 'NSW': [20.3, 55.2], 'SA': [55]} 但使用上面的代码我得到 {'Queensland, 30.5\n ' : [], 'NSW, 20.3\n' : [], 'SA, 55\n' : [], '昆士兰州, 52.3\n' : [], 'NSW, 55.2\n' : []}
  • 编辑了答案...希望有帮助:)
猜你喜欢
  • 1970-01-01
  • 2018-12-20
  • 2011-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-30
相关资源
最近更新 更多