【问题标题】:How to read data from a file into a dictionary?如何从文件中读取数据到字典中?
【发布时间】:2022-11-16 12:53:45
【问题描述】:

我正在尝试从 a.txt 文件中读取信息,其中每个标签都是一个字典键,每个相关的读数列都是各自的值。

这是文件中的一些行:

increments ideal actual measured
0.0, 1000.0, 1000.0, 1006.4882
1.0, 950.0, 973.2774, 994.5579
2.0, 902.5, 897.6053, 998.9594
3.0, 857.375, 863.4304, 847.4721
4.0, 814.5062, 813.8886, 866.4862
with open(filename, 'r') as file:
    labels = file.readline().rstrip('\n').split('\t')
    num_cols = len(labels)
    data = [[] for _ in range(num_cols)] 
    data_dict = {}

上面的代码是正确的我只需要补充一点。 如何将标签作为字典键并将列作为其值获取到 data_dict 中?

【问题讨论】:

  • with open(filename) as infile): answer = {float(line.split(',',1)[0]):list(map(float(line.strip().split(', ')[1:]))) for line in infile}
  • 试试csv模块
  • 抱歉回答错误。我误解了你想做什么
  • 不清楚您要如何处理多行值。您是否期望一个以标签作为键并将值列表(代表列)作为值的字典?或者你想要每行一个字典并最终得到一个字典列表?
  • 我想要一本字典,其中每个单词都是字典键,键与其值列相关联。我希望能够执行 data.pop('increments') 并给我例如值 0、1、2、3、4

标签: python


【解决方案1】:

这是您的解决方案:

with open("test.csv", 'r') as file:
    
    labels = file.readline().rstrip('
').split() # read first line for labels
    data_dict = {l:[] for l in labels} # init empty container for each label

    for line in file.readlines(): # loop through rest of lines
        data = line.rstrip('
').split(',')
        for n, datapoint in enumerate(data):
            data_dict[labels[n]].append(datapoint)

print(data_dict)
# >>> {'increments': ['0.0', '1.0', '2.0', '3.0', '4.0'], 'ideal': [' 1000.0', ' 950.0', ' 902.5', ' 857.375', ' 814.5062'], 'actual': [' 1000.0', ' 973.2774', ' 897.6053', ' 863.4304', ' 813.8886'], 'measured': [' 1006.4882', ' 994.5579', ' 998.9594', ' 847.4721', ' 866.4862']}

我对你的输入文件有点困惑。您的数据似乎以逗号分隔,但您的标头以空格分隔?这里的概念基本上是您使用空列表创建字典,然后您可以使用 enumerate 函数并将数据点附加到适当的标头。希望这可以帮助!

【讨论】:

  • 哇 非常感谢 解决了
  • 别客气!如果对您有帮助,您可以为答案投票
  • 我会我还没有足够的声誉。不过,我非常感谢您的帮助
  • 你现在应该!
  • 谢谢!你赢得了你的赞成票
【解决方案2】:

您可以使用熊猫来解决这个问题

将熊猫导入为 pd

data_dict = pd.read_csv('a.txt', sep=' ').to_dict(orient="index").values()

【讨论】:

  • 这给出了错误的结果,并且不允许导入外部内容。
猜你喜欢
  • 2023-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
  • 2014-08-31
相关资源
最近更新 更多