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

Python 如何将OrderedDicts写入文件并将其读回列表?,python,list,file,arraylist,ordereddictionary,Python,List,File,Arraylist,Ordereddictionary,我有一个函数,它返回collections.orderedict(),这是http post的有效负载 当http post失败时,我需要记录脱机数据,因此我想将所有DICT写入一个文件并将其作为列表读取,我知道我可以创建一个列表并继续附加到列表中,但需要写入一个文件并将其读回列表中 有人能帮我解决这个问题吗?请建议是否有更好的方法以列表形式检索dict项目您可以将字典列表转换为json并将其保存到.json文件中。 那么,阅读它将是小菜一碟 from collections import Or

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

当http post失败时,我需要记录脱机数据,因此我想将所有DICT写入一个文件并将其作为列表读取,我知道我可以创建一个列表并继续附加到列表中,但需要写入一个文件并将其读回列表中


有人能帮我解决这个问题吗?请建议是否有更好的方法以列表形式检索dict项目

您可以将字典列表转换为
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

您可以将字典列表转换为
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

使用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将对象序列化为字符串
”[[“a”,1],“b”,2],“c”,3]]'
。然后json可以将数据读回python对象


json非常常见,在许多语言中都有使用。大多数web API都使用json来帮助其应用程序实现RESTful。

使用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将对象序列化为字符串
”[[“a”,1],“b”,2],“c”,3]]'
。然后json可以将数据读回python对象


json非常常见,在许多语言中都有使用。大多数web API都使用json来帮助他们的应用程序实现REST功能。

不使用文件,您愿意这样做吗?
list(dictionary.items()
感谢peter的回复,文件写入是必需的,因为dicts可能会增长到数万,不建议保留列表:(嗨,克里斯,我能用pickle在文件中添加新的dicts条目吗?你愿意不使用文件吗?
list(dictionary.items()
感谢peter的回复,文件写入是强制性的,因为dicts可能会增长到数万条,不建议保留列表:(嗨,克里斯,我能用pickle将新的dict条目附加到文件中吗?谢谢你的回答,dict会随着时间的推移不断增长,每次我得到dict对象时我都需要附加文件,请建议你是否有其他选择,我必须看一些代码。如果你有多个字典,请调用
dict.update(其他dict)
这将合并词典。感谢您的回复,dict会随着时间的推移不断增长,每次获取dict对象时我都需要追加文件,请建议您是否有其他选择。我必须查看一些代码。如果您有多个词典,请调用
dict.update(其他dict)
这将合并词典。感谢您的回复,dict对象会随着时间的推移不断增长,每当我脱机时,我都想将dict转储到一个文件中,一旦我联机,我想发送到服务器每当您需要更新它时,只需再次打开该文件,读取该文件,这样您就可以从中获得一个
列表,并附加到list,使用
json.dumps(list)将列表转换为json
并将其写入一个文件。由于没有将list改回json,我一直在错误地读取它,现在我使用json.loads将文件读回list,并附加新的dict,然后使用json.dumps进行写回,最后当我需要传递dict时,我只需使用json.loads读取整个文件并发送它,您的解决方案非常有效,谢谢@NetherThanks net对于您的回答,dict对象会随着时间的推移不断增长,每当我脱机时,我都想将dict转储到一个文件中,一旦我联机,每当您需要更新它时,我都想发送到服务器,只需再次打开该文件,读取该文件,以便从中获得一个
列表
,附加到列表,使用
json.dump将列表转换为jsons(list)
并将其写入一个文件。由于没有将list改回json,所以我一直读错了,现在我使用json.loads将文件读回list,并附加新的dict,然后使用json.dumps进行写回,最后当我需要传递dict时,我只需使用json.loads读取整个文件并发送,您的解决方案非常有效,谢谢@Nether