添加新数据、更新现有数据和删除缺失数据的算法
Algorithm to add new, update existing and remove missing data
我进行了大量搜索,但未能找到实现以下目标的最有效方法的满意答案。
假设我的应用程序包含一个产品列表。每天结束时都会调用外部服务 returns 来自主数据源的另一个产品列表。
- 如果主数据中的产品列表包含任何不在我的应用程序中的产品,请将产品添加到应用程序。
- 如果主数据中的Product已经在我的App中,并且没有做任何改动,什么都不做。
- 如果主数据中的产品已经在我的应用程序中,但某些数据已更改(例如产品名称),请更新产品。
- 如果某个产品在我的应用程序中可用,但不再在主数据源中,请在应用程序中将其标记为“不可用”。
目前,我在每个列表上循环,为每个产品循环另一个列表:
- 对于主数据列表中的每个Product,循环遍历App中的Products,并根据需要进行更新。如果未找到产品,则将产品添加到应用程序。
- 然后,对于App中的每个Product,循环遍历主数据列表中的Products,如果没有找到,则在App中标记为“Unavailable”。
我想知道是否有更有效的方法来实现这一点?或者任何与此相关的算法或模式?
在每种情况下,产品都由 Python 列表中的对象表示。
首先,我建议使用 dict
s,产品代码(或名称或其他)作为键,产品 object
作为值。这应该使您的循环在一千个条目上至少快 100 倍。
然后,特别是对于第二次搜索,可能值得探索将第一个 dict
的键转换为 set
的可能性,并在差异上循环,如
for i in set(appDict.keys()).difference(masterDict.keys()):
##update unavailable Product data
我进行了大量搜索,但未能找到实现以下目标的最有效方法的满意答案。
假设我的应用程序包含一个产品列表。每天结束时都会调用外部服务 returns 来自主数据源的另一个产品列表。
- 如果主数据中的产品列表包含任何不在我的应用程序中的产品,请将产品添加到应用程序。
- 如果主数据中的Product已经在我的App中,并且没有做任何改动,什么都不做。
- 如果主数据中的产品已经在我的应用程序中,但某些数据已更改(例如产品名称),请更新产品。
- 如果某个产品在我的应用程序中可用,但不再在主数据源中,请在应用程序中将其标记为“不可用”。
目前,我在每个列表上循环,为每个产品循环另一个列表:
- 对于主数据列表中的每个Product,循环遍历App中的Products,并根据需要进行更新。如果未找到产品,则将产品添加到应用程序。
- 然后,对于App中的每个Product,循环遍历主数据列表中的Products,如果没有找到,则在App中标记为“Unavailable”。
我想知道是否有更有效的方法来实现这一点?或者任何与此相关的算法或模式?
在每种情况下,产品都由 Python 列表中的对象表示。
首先,我建议使用 dict
s,产品代码(或名称或其他)作为键,产品 object
作为值。这应该使您的循环在一千个条目上至少快 100 倍。
然后,特别是对于第二次搜索,可能值得探索将第一个 dict
的键转换为 set
的可能性,并在差异上循环,如
for i in set(appDict.keys()).difference(masterDict.keys()):
##update unavailable Product data