【问题标题】:Converting comma separated .txt file into dictionary将逗号分隔的 .txt 文件转换为字典
【发布时间】:2019-03-06 22:17:05
【问题描述】:

我有一个逗号分隔的 .txt 文件,我需要将列表转换为 python 3 中的键:值对:

下面是.txt文件:

1988,0.4891
1989,0.2830
1990,0.4312
1991,0.1251
1992,0.0181
1993,0.6182
1994,0.1587
1995,0.1409
1996,0.1505
1997,0.0994
1998,0.1631
1999,0.0330
2000,0.0523
2001,-0.0798
2002,0.1107
2003,0.2308
2004,0.0484
2005,0.0114
2006,0.1088
2007,0.0228
2008,0.1538
2009,0.0038
2010,0.1085
2011,-0.0631
2012,-0.1581
2013,0.2538
2014,0.1377
2015,0.0199
2016,-0.0392
2017,0.0433
2018,-0.0154

这是我的python代码:

import csv
answer = {}
with open("annual_chesapeakeCapital_diversifiedProgramLV.txt") as infile:
    keys = infile.readline().split(",")
    values = infile.readline().split("\n")

    answer = dict(zip(keys, values))
    print(answer)

我做错了什么?

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    您可以使用csv.reader 将行读入一系列包含两项的列表,以便您可以将其传递给 dict 构造函数来构建您要查找的 dict:

    with open("annual_chesapeakeCapital_diversifiedProgramLV.txt") as infile:
        answer = dict(csv.reader(infile))
    

    【讨论】:

      【解决方案2】:

      要具体回答您的问题,您做错的是readline() 仅读取 one 行-您需要迭代读取所有行并拆分每一行,并使用每次拆分以在字典中创建条目。

      BTW 字典根据定义只能为每个键输入一个条目,所以您是否计划好如果两行在逗号之前具有相同的值会发生什么?

      【讨论】:

      • 他们永远不会,因为逗号之前的每个数字都表示为一年,所以除非数据错误(已经检查过多次),否则这个问题不应该存在
      • IME 当假设被证明是错误的时候非常令人失望,这通常会造成很多头疼和压力 - 现在写一张支票以证明年份条目还没有变得多么简单在那里,如果它引发异常?
      • 你也应该使用例如key,value = infile.readline().split(",",1) 获取键/值对。
      【解决方案3】:

      使用 pandas 很容易

      import pandas as pd
      df=pd.read_csv("annual_chesapeakeCapital_diversifiedProgramLV.txt",header=None)
      answer =dict(zip(df[0].values,df[1].values))
      

      【讨论】:

        猜你喜欢
        • 2015-05-20
        • 2021-09-27
        • 1970-01-01
        • 1970-01-01
        • 2019-04-05
        • 1970-01-01
        • 2019-02-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多