【问题标题】:Python- how to convert lines in a .txt file to dictionary elements?Python-如何将 .txt 文件中的行转换为字典元素?
【发布时间】:2015-07-13 06:46:54
【问题描述】:

假设我有一个文件“stuff.txt”,其中包含以下内容: 问:5 r:2 s:7

我想从文件中读取每一行,并将它们转换为字典元素,字母是键,数字是值。 所以我想得到 y ={"q":5, "r":2, "s":7}

我尝试了以下方法,但它只打印一个空字典“{}”

y = {} 
infile = open("stuff.txt", "r") 
z = infile.read() 
for line in z: 
    key, value = line.strip().split(':') 
    y[key].append(value) 
print(y) 
infile.close()

【问题讨论】:

    标签: python file dictionary


    【解决方案1】:

    试试这个:

    d = {}
    with open('text.txt') as f:
        for line in f:
            key, value = line.strip().split(':')
            d[key] = int(value)
    

    您正在附加到d[key],就好像它是一个列表一样。你想要的只是像上面那样直接分配它。

    此外,使用with 打开文件是一种很好的做法,因为它会在“with 块”中的代码执行后自动关闭文件。

    【讨论】:

      【解决方案2】:

      有一些可能的改进。第一个是使用上下文管理器进行文件处理 - 即with open(...) - 如果出现异常,它将为您处理所有需要的任务。

      其次,你的字典赋值有一个小错误:值是用=运算符赋值的,比如dict[key] = value。

      y = {} 
      with open("stuff.txt", "r") as infile: 
          for line in infile: 
              key, value = line.strip().split(':') 
              y[key] = (value) 
      
      print(y) 
      

      【讨论】:

        【解决方案3】:

        Python3:

        with open('input.txt', 'r', encoding = "utf-8") as f:
            for line in f.readlines():
                s=[] #converting strings to list
                for i in line.split(" "):
                    s.append(i)
                d=dict(x.strip().split(":") for x in s) #dictionary comprehension: converting list to dictionary
                e={a: int(x) for a, x in d.items()} #dictionary comprehension: converting the dictionary values from string format to integer format
                print(e)
        

        【讨论】:

          猜你喜欢
          • 2019-05-26
          • 1970-01-01
          • 2022-08-22
          • 2019-10-28
          • 2021-08-10
          • 2020-04-28
          • 2022-06-15
          • 1970-01-01
          • 2020-09-21
          相关资源
          最近更新 更多