Я полагаю, что основанное на pandas
appraoch может ускорить ваш процесс. Чтобы проверить это, я сделал быстрый анализ времени выполнения вашего и pandas
подхода.
Я попытался воспроизвести вашу настройку, создав data
и online
, которые содержат некоторые случайные SKU и ключи.
from random import randint, seed
seed(42)
data = {}
for i in range(40000):
data[i]={"sku":randint(0,100000), "online":""}
online = [randint(0,100000) for _ in range(1000)]
Я рассчитал ваш подход, используя timeit
:
def approach1():
for key in data:
if data[key]["sku"] in online:
data[key]["online"] = 1
print(timeit(approach1(), number=10))
>>>> 4.411111836
И я сделал то же самое для подхода pandas
:
df = pd.DataFrame.from_dict(data, orient='index')
def approach2():
in_online = df.index.isin(online)
df.loc[in_online,'online']='1'
print(timeit(approach2, number=10))
>>>> 0.020047925999999938
Как Как видите, подход pandas
примерно в 220 раз быстрее, чем другой (хотя реальная разница немного зависит от размера и структуры ваших данных).