我的项目概述:我每5秒记录一些实时数据并以.json格式存储,每个文件的名称将是它被提取的日期(例如2016_02_19_07_10_43.json
)。我想要一个单独的日期索引文件'它按时间顺序包含我获取的数据的日期(即文件名),以便稍后我可以通过索引调用每个数据集(每个文件也有一个相关的二进制数字)
这是我的数据样本(我也将其保存为.json)
{"2016_02_19_07_10_46": 1, "2016_02_18_10_55_38": 0, "2016_02_19_07_10_44": 1, "2016_02_19_07_10_43": 1, "2016_02_19_07_10_45": 1}
因为我将打开索引文件并添加一个新的日期/二进制对,然后保存回json,它似乎存储为dict是不合适的。我已经运行了一些测试,看起来如果你在一个设置中为一个dict添加5个值,然后写入json,它们按照它们被添加的顺序保持(即dicts有时会有顺序),但是一旦dict重新打开并且更多的值添加dict然后随机排序。
因此,如果我在一个设置中创建索引,字典就可以了,json将被排序,但是当我重新打开json并将其转换为python dict对象时,值会加密。那么列表对象是否合适?
只是为了证明我的意思我设计了这个测试:
test = {}
for i in range(5):
test[i] = i
with open( 'test.json', 'w') as f:
json.dump(test, f)
产地:
{"0": 0, "1": 1, "2": 2, "3": 3, "4": 4}
然后重新打开json并添加更多:
with open( 'test.json', 'r') as f:
test=json.load(f)
for i in range(5,10):
test[i] = i
with open( 'test.json', 'w') as f:
json.dump(test, f)
生成
{"5": 5, "6": 6, "7": 7, "8": 8, "9": 9, "1": 1, "0": 0, "3": 3, "2": 2, "4": 4}
这很有意思,因为似乎所有新增加的值都会保持其顺序,但是dict中的现有值是混乱的。
对此有何评论以及如何保存索引?
编辑:@Serbitar 这很有意思,因为这可以预先制定有序的说法:for i in range(4):
test = {}
for i in range(0,5):
test[i] = i
print test
输出:
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4}
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4}
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4}
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4}