【问题标题】:Save a text file as a dictionary [duplicate]将文本文件另存为字典 [重复]
【发布时间】:2020-11-27 11:22:39
【问题描述】:

我正在尝试读取以下由逗号分隔的四列的文本文件:

1, 0.1, 0.2, 73
1, 0.11, 0.1, 101
2, 0.23, 0.01, 17
2, 0.12, 0.15, 23

第一个数字代表一个批次,第二个和第三个分别代表一个 x 和 y 坐标,第四个是一个值。

我想将此文本文件保存为 python 中的字典。我尝试使用 save_rows 函数来创建字典:

def save_rows('sample1.txt'):

    keys = ['batch', 'x', 'y', 'val']
    dicts = []
    with open(filename) as f:
        for line in f:
            line = line.strip().split(',')
            d = dict(zip(keys, line))
            return d
            dicts.append(d)

但它没有返回或创建字典,我做错了什么?

提前致谢!

【问题讨论】:

  • 不是你想要的清晰吗?
  • 嗨,如果我不清楚,我很抱歉。我现在已经编辑了文本,希望它更容易理解我想要的内容。简而言之,我想要的是帮助如何成功地将文本文件保存为字典?
  • 您能否也包括您的预期输出?

标签: python


【解决方案1】:

您的代码中存在一些问题。首先,函数save_rows 应该接受一个类似filename 的参数,然后你需要在你的代码中传递你的文件名。例如save_rows("sample1.txt")sample1.txt 作为函数中filename 的参数传递。其次,您在错误的地方使用了return 关键字。我建议您查看this article 以清楚地了解return 的作用。 return 需要在最后使用以打印出名为 dicts 的列表,其中包含 4 行的所有字典。当您更正这两个问题时,您的程序将正常工作。下面是您的代码应该是什么样子的示例。

def save_rows(filename):
    keys = ['batch', 'x', 'y', 'val']
    dicts = []
    with open(filename) as f:
        for line in f:
            line = line.strip().split(',')
            d = dict(zip(keys, line))
            dicts.append(d)
    return dicts

print(save_rows("sample1.txt"))

我得到的输出如下。

[{'batch': '1', 'x': ' 0.1', 'y': ' 0.2', 'val': ' 73'}, {'batch': '1', 'x': ' 0.11', 'y': ' 0.1', 'val': ' 101'}, {'batch': '2', 'x': ' 0.23', 'y': ' 0.01', 'val': ' 17'}, {'batch': '2', 'x': ' 0.12', 'y': ' 0.15', 'val': ' 23'}]

【讨论】:

    猜你喜欢
    • 2020-11-24
    • 2020-07-22
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2017-11-08
    相关资源
    最近更新 更多