将多个python词典合并到动态文件中

时间:2017-07-18 14:05:34

标签: python json dictionary

我想创建一个单独的文件,结合多个python词典,关于可以每天更新的沿海天气条件(潮汐,风等)。数据来自多个API和网站,每个我转换为python字典,并使用以下代码行合并为单个字典:

pyinstaller --onedir C:\Users\ -- Directory of Python file

我的目标是每天对网站进行抽样;并根据每天的天气和网站预测更新单个文件。我认为最好的方法是使用日期为层次结构创建一个新的顶级。所以这就像是:

OneDayWeather_data = {'Willydata' : Willydata, 'Bureau of Meteorology' : BoMdata, 'WeatherZone' : WZdata}

对于每一天,我会为新一天的数据添加一个新的顶级条目,即

Weather_data['18/07/2017']['Willy']['Winds']

Weather_data['18/07/2017']['BoMdata']['Winds']

我已经尝试过使用堆栈溢出建议的各种方法(完全披露:我对Python很新)。例如,

AllWeatherData['19/07/2017']['Willy']['Winds']

...但我一直收到错误(在这种情况下:当我尝试重新打开时,ValueError(errmsg(“额外数据”,s,end,len(s)))。希望某人有一些专业知识可以权衡如何解决这个问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

您实际上是将更新dict附加到现有的dict

# write the initial file
import json

OneDayWeather_data = {'a':'b'}

with open('test.json', 'w') as f:
    json.dump(OneDayWeather_data, f)

OneDayWeather_data = {'c':'d'}

# open the initial file and attempt to append
with open('test.json','r+') as f:
    dic = dict(json.load(f))
    dic.update(OneDayWeather_data)
    json.dump(dic, f)

# reopen the appended file
with open('test.json', 'r') as f2:
    json_object = json.load(f2)

在此阶段,您的test.json看起来像

{"a": "b"}{"a": "b", "c": "d"}

您可以分开阅读/更新/写入

with open('test.json','r') as f:
    dic = dict(json.load(f))
    dic.update(OneDayWeather_data)
with open('test.json', 'w') as f:
    json.dump(dic, f)

How to append in a json file in Python?

中可以找到类似的答案