使用文件中的数据创建字典值列表

时间:2019-04-07 22:34:27

标签: python tuples readfile

我有一个输入路径/目录到文件夹和文件名的方法。我需要从文件夹中的指定文件名检索数据并创建一个LIST of DICTIONARIES

示例文件的PART如下:

VLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDRFKHLKTEAEMKASEDLKK

1 137 0 8 7.887

10 127 0 8 7.388

10 130 0 8 5.087

11 131 0 8 5.400

10 134 0 8 4.770

每个文件的第一行都应忽略。然后,每行的前两个数字将是分配给键值“ pairs”的值,08被忽略,最后一个数字是分配给“ distance”的值 这是对文件中的每一行进行的操作,每一行都是新的字典。

因此输出应类似于

output = [
   {"pairs": (1,137), "distance": 7.887},

   {"pairs": (10,127), "distance": 7.388},

   {"pairs": (10,130), "distance": 5.087},

   {"pairs": (11,131), "distance": 5.400},

   {"pairs": (10,134), "distance": 4.770},

]

我不确定如何解决此问题,是否读取文件以及文件的每一行。到目前为止,我所掌握的基本知识。我尚未实现创建字典列表的操作。我尝试从基本开始,读取每一行并复制数据,但输出为空列表。 请注意,此段代码是错误的,仅是我尝试过的。

def get_rr(self, file_name, path):
    my_lst = []
    #takes every file in folder and put in files list
    for f in os.listdir(path):
        #splits the file name into file name and its extension
        with open(os.path.join(path,f)) as file_object:
                line = file_object.readline()
                while 1:
                    line = file_object.readline().rstrip()
                    if line == "":
                        break
                    my_lst.append(line)

        return my_lst

我的问题:如何编程以使输出看起来像下面这样:

output = [
   {"pairs": (1,137), "distance": 7.887},

   {"pairs": (10,127), "distance": 7.388},

   {"pairs": (10,130), "distance": 5.087},

   {"pairs": (11,131), "distance": 5.400},

   {"pairs": (10,134), "distance": 4.770},

]

1 个答案:

答案 0 :(得分:1)

理解非常方便。另外,您可能不需要区分文件路径和名称,操作系统将为您处理。考虑到这一点,这样的事情应该起作用

def get_ss(self, path):
    with open(path) as file:
        lines = list(file)[2:]
        return [{"pairs":tuple(map(int, words[:2])), "distance":float(words[-1])} for words in (line[:-1].split() for line in lines if line.strip())]