首页 > 解决方案 > 从文件python中检索列表类型的多个字典

问题描述

在将列表传递给文件后,我想检索列表的字典。但是当我将其写入文本时,我会丢失列表内容的格式。如何再次恢复以字典类型格式化的数据?

首先,我创建了一个包含两个维度的列表。然后我用空字典和带值的字典填充值。

dataValue = {
        'telefone': '6298855663311',
        'nome': '', 
        'pagamento': 'Boleto', 
        'embarque': '16:00'
}

emptyDi = {}

assentosMatriz2D = [

        [dataValue, emptyDi, emptyDi, emptyDi, emptyDi],
        
        [emptyDi, emptyDi, emptyDi, emptyDi, emptyDi],
        
    [emptyDi, emptyDi, dataValue, emptyDi, emptyDi]

    ]

print(assentosMatriz2D[0][1])

with open('listfile.txt', 'w') as f:
    f.writelines("%s\n" % place for place in assentosMatriz2D)

# define empty list
linhas = []

# open file and read the content in a list
with open('listfile.txt', 'r') as f:
    filecontents = f.readlines()

    for line in filecontents:
        # remove linebreak which is the last character of the string
        current_place = line[:-1]

        # add item to the list
        linhas.append(current_place)

create_lt = linhas[1]

print(create_lt[0][0])

print(f'the firt line {create_lt}')

output:::::
>>{}
>>[
>>the firt line [{}, {}, {}, {}, {}]

标签: python-3.xlistfiledictionaryformatting

解决方案


要检索作为字符串传递的 dict,您可以使用eval( current_place = eval(line[:-1])) 但由于它可以运行代码,因此非常不安全,如果您不信任来源,请不要这样做。最常见的存储dicts的方式是json

import json
with open('listfile.txt', 'w') as f:
    json.dump(assentosMatriz2D, f)

# open file and read the content in a list
with open('listfile.txt', 'r') as f:
    assentosMatriz2D = json.load(f)

推荐阅读