Вы правы, это неэффективно.Вместо использования списка словарей, вы должны использовать словарь словарей или словарь объектов:
data = {"IMG_1.jpg": {"id": "53567"},
"IMG_2.jpg": {"id": "53568"},
"IMG_3.jpg": {"id": "53569"},
"IMG_4.jpg": {"id": "53570"}}
for image_name in image_names:
if (image_name in data):
image_ids.append(data[image_name]["id"])
Вместо O (n) для поиска в списке вы получите O (1).) для поиска в словаре.
Конечно, вы все равно можете иметь name
в качестве ключа в своем под-словаре, если хотите, я просто удалил его для простоты.Но настоящим святым Граалем здесь было бы построить класс:
class ImageData:
def __init__(self, name, id):
self.Name = name
self.Id = id
data = {"IMG_1.jpg": ImageData("IMG_1.jpg", "53567"),
"IMG_2.jpg": ImageData("IMG_2.jpg", "53568"),
"IMG_3.jpg": ImageData("IMG_3.jpg", "53569"),
"IMG_4.jpg": ImageData("IMG_4.jpg", "53570")}
for image_name in image_names:
if (image_name in data):
image_ids.append(data[image_name].Id)