Ответы пользователя по тегу Алгоритмы
  • Как переработать код алгоритма поиска объекта?

    @Vaskey
    Можно упростить ваш алгоритм поиска объекта, объединив два шага (поиск папки по идентификатору объекта и поиск папки по имени) в один. Вместо того, чтобы хранить идентификаторы папок в словаре, можно использовать имена папок как ключи и хранить идентификаторы объектов в списке значений. Тогда вы можете использовать имя папки, чтобы найти соответствующий идентификатор объекта, а затем использовать это значение для поиска папки в массиве 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.
    Ответ написан