Как получить самый длинный и самый короткий край границы комнаты?

В Revit API я пытаюсь получить самый длинный и самый короткий край границы комнаты. (комната - прямоугольник)

На данный момент у меня есть список из 4 границ комнаты. (Rb_curves) Это кривые. Я пытаюсь отсортировать этот список по длине каждой кривой.

sorted_rb_curves = sorted (rb_curves, key =?)

Мне интересно, что я могу назначить «ключу» для сортировки.

Ваша помощь будет очень признательна!


person Yongjoon Kim    schedule 20.06.2019    source источник


Ответы (1)


Простой способ сортировки списков на основе атрибутов объекта - использовать лямбда. В вашем случае это будет:

rb_curves.sort(key=lambda x: x.Length)

где Length - это атрибут, по которому выполняется сортировка. Обратите внимание, что это изменяет исходный список (в отличие от создания нового отсортированного списка)

Это будет означать, что rb_curves[0] - самая короткая граница, rb_curves[-1] - самая длинная.

person Callum    schedule 20.06.2019
comment
идеально, люблю это. - person Jeremy Tammik; 20.06.2019
comment
Огромное спасибо! Более чистый и быстрый способ сделать это! - person Yongjoon Kim; 20.06.2019