Наиболее эффективный способ хранения и извлечения 3 списков связанных данных в python

У меня есть имя модели django, модель и запись модели. Каков наиболее эффективный способ их хранения и извлечения. Я думал о 3 отдельных списках или словаре с именем модели в качестве ключа и кортежем, содержащим модель и запись в качестве значения. Есть другие варианты?

Списки кажутся более быстрыми.

Список занял: 0.005285699999999949 seconds

Диктант занял: 0.10288800000000009 seconds

Code

start_time = time.process_time()
model_names = []
models = []
records = []
nbr_of_interations = 10000
for i in range(nbr_fixed_models):
    model_names.append(fixed_models[i].__name__)
    models.append(model_names[i])
    records.append(fixed_models[i](name=generate_random_string(50)))

for _ in range(nbr_of_interations):
    model_to_find = fixed_models[random.randint(0,nbr_fixed_models-1)]
    model_loc = model_names.index(model_to_find.__name__)
    if hasattr(models[model_loc], 'name'):
        records[model_loc].name = generate_random_string(50)
print(f'List took: {time.process_time() - start_time} seconds')

start_time = time.process_time()
model_details =\
    {fixed_models[i].__name__: (fixed_models[i], fixed_models[i](name=generate_random_string(50)))
     for i in range(nbr_fixed_models)}

for _ in range(nbr_of_interations):
    model_to_find = fixed_models[random.randint(0,nbr_fixed_models-1)].__name__
    if hasattr(model_details[model_to_find][0], 'name'):
        model_details[model_to_find][1].name = generate_random_string(50)
print(f'Dict took: {time.process_time() - start_time} seconds')
Вернуться на верх