store difference of vehicle data to file
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import json
|
||||
from copy import deepcopy
|
||||
|
||||
|
||||
def deep_diff(data, temp_data):
|
||||
new_data = {}
|
||||
for k in data.keys():
|
||||
if type(data[k]) == type({}):
|
||||
if k not in temp_data:
|
||||
temp_data[k] = {}
|
||||
temp = deep_diff(data[k], temp_data[k])
|
||||
if temp:
|
||||
new_data[k] = {}
|
||||
new_data[k] = temp
|
||||
else:
|
||||
if k in temp_data:
|
||||
if data[k] != temp_data[k]:
|
||||
new_data[k] = data[k]
|
||||
else:
|
||||
new_data[k] = data[k]
|
||||
return new_data
|
||||
|
||||
|
||||
def deep_merge(d, u, only_existing=True):
|
||||
for k, v in u.items():
|
||||
if isinstance(v, dict):
|
||||
if only_existing:
|
||||
r = deep_merge(d.get(k, {}), v)
|
||||
d[k] = r
|
||||
else:
|
||||
d[k] = v
|
||||
else:
|
||||
d[k] = u[k]
|
||||
return d
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
with open("results/WVWZZZE1ZMP010760/2024/10/18/vehicle_WVWZZZE1ZMP010760_2024-10-15T12-05-23-268Z.json", "r") as fp:
|
||||
src = json.load(fp)
|
||||
src_last = {}
|
||||
diffed_list = []
|
||||
last = {}
|
||||
for s in src:
|
||||
diffed = deep_diff(s, last)
|
||||
diffed_list.append(deepcopy(diffed))
|
||||
last = deepcopy(s)
|
||||
print(f"Diffed: {diffed}")
|
||||
|
||||
merged_list = []
|
||||
last = {}
|
||||
for d in diffed_list:
|
||||
merged = deep_merge(last, d)
|
||||
last = deepcopy(merged)
|
||||
merged_list.append(deepcopy(merged))
|
||||
print(f"Merged: {merged}")
|
||||
|
||||
assert src == merged_list
|
||||
|
||||
Reference in New Issue
Block a user