首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个json中比较数据,并在python中保持差异。

在两个json中比较数据,并在python中保持差异。
EN

Stack Overflow用户
提问于 2020-10-12 14:48:43
回答 1查看 25关注 0票数 2

我计划使用python脚本以指定的时间间隔(每天2次)从day服务中提取数据。在获得json格式的数据后,我想将其与上次提取的数据进行比较,然后将差异作为json数据提供,存储提取的json以供下一次比较,并删除之前的数据。

diff json将始终具有相同的模式,类似于下面的示例:

代码语言:javascript
复制
 [
  {"Title" : "Class1", "ID" : "155e5acc-aaa7e-2872ade", "Time" : "2020-10-15 08:15:00", "Participants": 0, "Cancelled": 0, "Booked": 0, "Full":0 },
  {"Title" : "Class3",  "ID" : "235e5a3b-b890e-3200ad9", "Time" : "2020-10-15 11:00:00","Participants": 11, "Cancelled": 0, "Booked": 1, "Full":0 },
  {"Title" : "Class0",  "ID" : "985e5a4a-3cd7e-ac87a76","Time" : "2020-10-15 15:30:00","Participants": 5, "Cancelled": 1, "Booked": 0, "Full":0 }
 ]

数组中的每一项都可以通过值ID进行标识,并与我上次提取数据时的相应项进行比较。如果其他字段(参与者、已预订、已满、时间)存在差异,我希望以某种方式存储差异,以便清楚哪些字段发生了更改。这种数据更改可以有自己的模式,其中每个元素也可以通过ID标记进行标识。例如,如果"Class1“的TimeBooked已经更改,那么它将作为一个项目数组出现在diff中,其中以前的数据在was中,新数据在is中。

代码语言:javascript
复制
    [
      {"ID": "155e5acc-aaa7e-2872ade", "ChangedData" : [
          {"Field": "Time", "Was" : "2020-10-15 08:15:00", "Is": "2020-10-15 09:15:00" },
          {"Field" : "Booked", "Was": 0, "Is" : 1} ]},
    ]

我在这里的实际问题是:有没有最佳实践或类似的东西?我知道我想要什么,但不确定如何才能达到目标。此时,我只需要提取数据,将其保存到磁盘上,下次再次加载它,将其与新数据进行比较,然后迭代两个数组中的每个项,比较ID和每个数据元素。但是,可能已经有了用于此类任务的现有json包。提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2020-10-12 15:01:08

我认为dictdiffer可能会帮助您检查差异。下面是一个简单的官方示例:

代码语言:javascript
复制
>>> list(diff({'fruits': []}, {'fruits': ['apple', 'mango']}, expand=True))
[('add', 'fruits', [(0, 'apple')]), ('add', 'fruits', [(1, 'mango')])]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64312943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档