поиск как в экселе

Главная Форумы Задать вопрос поиск как в экселе

Просмотр 15 сообщений - с 16 по 30 (из 37 всего)
  • Автор
    Сообщения
  • #6553 Score: 0
    txt
    Модератор
    86 pts

    вопрос этого же автора из динамо чата

    Решение

    #6625 Score: 0
    Аноним
    Неактивированный
    10 pts

    Вопрос в развитие темы. А как модифицировать скрипт чтобы при нахождении идентичного вхождения из сравниваемого списка 1 со списком 2 в список 4 подставлялось значение из списка 3 соответствующее индексу совпавшего значения из списка 2, но в случае отсутствия сопоставления в список 4 подставлялось бы пустое строковое или численное значение.

    Просто стою сейчас перед похожей проблемой: надо снять из параметров пространств номера помещений, потом пройтись вытащить из файла эксель некие параметры, которые при совпадении номера помещения из пространства с номером помещения из эксель файла будут тащить в другие параметры пространства расчетные значения, расположенные в соседних столбцах на этой же строке. Соответственно на выходе мне надо иметь список с длиной равной длине списка пространств, при условии что длина списка с номерами помещений из экселя может быть как длиннее, так и короче.

    #6631 Score: 0
    txt
    Модератор
    86 pts

    у вас есть:

    список номеров пространств =[1,2,3…]

    список из экселя с номерами помещений и некие соответствующие определенному номеру параметры – сгруппируйте их так : ([ номер помещения , параметр 1, параметр 2….] , [….]) затем извлекайте нужные параметры при совпадении номеров:

    OUT=sorted([[i[1], i[2] ] for i in IN[0] for j in IN[1] if i[0]==j ])

    если я вас неправильно понял, то лучше сделайте картинку из динамо какие списки исходные и какой нужен на выходе

    #6632 Score: 0
    Аноним
    Неактивированный
    10 pts

    Картинка пока такого общего плана. Там суть проблемы в чем для меня сейчас – список номеров помещений/пространств снимаемый из модели и список номеров помещений получаемый из ревита могут не совпадать по длине и, как правило, список номеров пространств из модели всегда будет длиннее, но возможна и противоположная ситуация. В экселе номера помещений расположены по порядку, на обработку в динамо номера пространств из ревита подаются в хаотическом виде, так как их получил на вход нод. Мой главный затык сейчас в том что мне надо последовательно взять каждый номер пространства из списка параметров пространств, сопоставить его на предмет идентичности со списком номеров помещений из эксель файла, в случае удачного сопоставления взять из этого же эксель файла из соседних столбцов некое значение (будут и числовые и текстовые значения) по индексу совпадения, добавить это значение в новый список, который далее будет записываться в заданные параметры пространств, в случае отсутствия сопоставления в список должно подставляться пустое значение. На выходе я хочу получать список с длиной равный длине списка номеров пространств из ревита, в котором будут и значения и пустые строки, которые я буду писать в параметры пространств.

    #6633 Score: 0
    Аноним
    Неактивированный
    10 pts

    Мне виделось какая-то конструкция следующего вида, но пока при разных вариациях направления этой мысли у меня либо происходит перемножение сравниваемых списков, либо питон выдаёт ошибку что в сопоставляемом списке значения вышли за пределы диапазона. Порядок вложенности пробовал менять местами – ситуация не меняется.

    #6634 Score: 0
    Ренат Я.
    Модератор
    79 pts

    единственное вылазит предупреждение, а так вроде выполняется задача

    #6635 Score: 0
    Аноним
    Неактивированный
    10 pts

    Накидал принципиальную схему того что хочу получить на выходе. Скрипт сверху – это мои тщетные попытки воплотить требуемую мне логику, скрипт снизу – это работающий кусок кода из этой темы, но его как-то надо доработать под мои задачи, а у меня пока это не получается.

    Вот ссылка на сам нод, с которым можно экспериментировать https://yadi.sk/d/km81oYrm3MfqrC

    Сама задача похоже аналогична задаче из этой темы

    #6637 Score: 1
    Ренат Я.
    Модератор
    79 pts

    если питон не важен для решения задачи, то можно сделать нодами

    #6638 Score: 0
    Аноним
    Неактивированный
    10 pts

    Ренат Я., спасибо! Понял в чем была моя ошибка, когда я пробовал ночью предложенный тобой способ и у меня он не заработал. Надо было в узле проверки равенства переплетение в “Векторное произведение” выставить. Ночью не обратил на это внимание и не стал дальше разбираться в чем затык.

    txt, тем не менее я буду признателен если подскажешь как модифицировать твой код в питоне для решения моей задачи. Интересно владеть разными способами решения одной и той же задачи.

    #6648 Score: 0
    Аноним
    Неактивированный
    10 pts

    Тут  новая проблемка всплыла, даже 2. Почему-то из таких подготовленных списков пока корректно записываются в параметры пространств только текстовые значения. По плану писать в параметры метры, метры кубические в час, Ватты и целочисленные значения некоторой вспомогательной информации. И пока удаётся передавать в ревит только текстовые параметры. Не могу понять на чем спотыкается нод в процессе передачи значений, то ли на том что воспринимает передаваемые параметры как строковый тип данных, то ли на том что в списке содержатся пропуски в виде null значений, которые по какой-то причине не устраивают ревит.

    Вот накидал тестовый проектик, файл эксель, откуда буду передавать значения в реальный проект и полурабочий нод. Сейчас там затыки во всех численных параметрах (высота, температура, расходы воздуха), которые я бы хотел передавать в свойства пространств.

    Накидал простенький проектик с абстрактными пространствами, содержащими требуемые мне на данном этапе параметры. Прилагаю нод в его текущем виде. Если кто поможет разобраться на чем стопорится нод, буду очень признателен.

    Ссылка https://yadi.sk/d/g6DLktDy3Mgvq7

    #6649 Score: 0
    Ренат Я.
    Модератор
    79 pts

    по поводу преобразующего скрипта

    по поводу температур ты ссылался не на тот столбец

    по поводу ошибки записи в параметр, если у тебя числовой параметр, то в него нельзя записать текст, а так как ты считываешь из Excel данные как String, тебе нужно перед записью в параметр произвести преобразования текста в число

     

    “Высота помещения” не может быть равна 0

    #6650 Score: 1
    txt
    Модератор
    86 pts

    Аналог решения от Рената в ответе #6637 питоном:

    #6651 Score: 0
    Аноним
    Неактивированный
    10 pts

    txt, спасибо! Я очень ждал твоего решения и не сомневался в том что оно будет очень изящным. Сколько я ни бился с этими циклами, но сам бы до такого не додумался – к сожалению практический опыт пока в самом зачаточном состоянии.

    Ренат, тоже спасибо! Действительно есть там некоторые косяки с моей стороны по части правильности выбираемых столбцов и ненулевой высоты, но пока вопрос температурами остается открытым, в м3/ч и Вт скорее всего достаточно будет преобразовать строковые значения в численные и ревит согласится их принять.

    Мне тут еще пришла в голову идея что можно не сопоставлять индексы экселевского списка на предмет поиска их в списке номеров пространств, а просто отфильтровать список пространств на совпадения номеров помещений с номерами из экселя и отсортировать его по порядку. Надо будет проработать и такой сценарий.

    #6652 Score: 0
    txt
    Модератор
    86 pts

    Рад слышать. На самом деле это решение появилось благодаря посту Рената  #6649 , что натолкнуло меня на кой-какие мысли, так что это своего рода командная работа) если узнаете какие то фишечки по питону, работе в динамо и все чего касается этот форум,  то делитесь ,  найдутся те , кому они пригодятся.

    #6653 Score: 1
    Oleg
    Участник
    28 pts

    Как вариант:

    После чего, получаем выборку со всеми параметрами из excel для интересующих элементов Revit, и с ней уже работаем:

Просмотр 15 сообщений - с 16 по 30 (из 37 всего)
  • Для ответа в этой теме необходимо авторизоваться.