如何将OrderedDicts写入文件并将其读回列表?

时间:2017-02-02 13:16:45

标签: python list file arraylist ordereddictionary

我有一个返回collections.OrderedDict()的函数,它是http post的有效负载。

我需要在http post失败时记录离线数据,所以我想将所有dicts写入文件并将其作为列表读回来,我知道我可以创建一个列表并继续追加到列表中,但需要的是写入文件并读回列表,

有人可以帮我解决这个问题,请建议是否有更好的想法将dict项目作为列表检索

2 个答案:

答案 0 :(得分:2)

使用json进行数据序列化。

var map = new[] {
    new { Value = "3*11", StartsWith = false, Result="ABC" },
    new { Value = "4100", StartsWith = false, Result="ABC" },
    new { Value = "4101", StartsWith = false, Result="ABC" },
    new { Value = "4102", StartsWith = false, Result="ABC" },
    new { Value = "4200", StartsWith = false, Result="ABC" },
    new { Value = "600A", StartsWith = false, Result="XWZ" },
    new { Value = "3*", StartsWith = true, Result="123" },
    new { Value = "03*", StartsWith = true, Result="123" },
};

json将对象序列化为字符串import json import collections d = collections.OrderedDict([('a', 1), ('b', 2), ('c', 3)]) s = json.dumps(list(d.items())) print(s) value = json.loads(s) print(value) 。然后json可以将数据读回到python对象中。

json非常常见,并且用于多种语言。大多数web apis使用json来帮助他们的应用程序RESTful。

答案 1 :(得分:0)

您可以将字典列表转换为json并将其保存到.json文件。 然后,阅读它将是一块蛋糕。

from collections import OrderedDict
import json
dic = OrderedDict()
dic['hello'] = 'what up'
dic_2 = OrderedDict()
dic_2['hey, second'] = 'Nothing is up'

with open('file.json', 'w') as f:
    dictionaries = [dic, dic_2]
    f.write(json.dumps(dictionaries))
with open('file.json', 'r') as read_file:
    loaded_dictionaries = json.loads(read_file.read())
    print(loaded_dictionaries[0])

输出:

{'hello': 'what up'}

只要字典键/值是以下任何一种类型,这都会干净利落:dict, list, str, int, float, bool, None