Можно упростить ваш алгоритм поиска объекта, объединив два шага (поиск папки по идентификатору объекта и поиск папки по имени) в один. Вместо того, чтобы хранить идентификаторы папок в словаре, можно использовать имена папок как ключи и хранить идентификаторы объектов в списке значений. Тогда вы можете использовать имя папки, чтобы найти соответствующий идентификатор объекта, а затем использовать это значение для поиска папки в массиве created_folders. Вот пример кода:
FOLDERS = {
"Geometry": {
"color": #...,
"icon": #...,
"ids": [
5163,
5167,
5173,
5168,
]
}
}
obj_type = obj.GetType()
folder_name = next((name for name, folder in FOLDERS.items() if obj_type in folder['ids']), None)
folder = next((folder for folder in created_folders if folder.GetType() == folder_name), None)
В этом примере мы сначала определяем идентификатор объекта, используя метод GetType(). Затем мы находим имя папки, которая соответствует этому идентификатору, с помощью генератора списков и функции next(). Затем мы находим папку, которая соответствует этому имени, с помощью того же подхода.
Этот подход более простой и легко читаемый, чем использование словаря FOLDERS с идентификаторами папок в качестве значений. Также он более гибкий, потому что вы можете легко добавлять новые папки и объекты в вашу программу, просто добавляя их имена и идентификаторы в словарь FOLDERS.