Форум сайта python.su
Добрый день, уважаемое питон-сообщество. Возникла проблема по сортировки словаря. Описываю ситуацию:
Решил для себя накидать простую считалку материалов в помещениях (таких считалок много, но инструмент решил заточить под свои нужды.) Черчу я все Revit, “пишу” код в Dynamo/IronyPython. Значит получил я словарь, где ключ это имя материала, а значение площадь в комнате. Но словарь имеет ключи с одинаковыми значениями, т.е. одинаковыми материалами. Хотелось бы получить в итоги словарь, где ключ было уникальное имя материала, а значения площади суммировались для одинаковых материалов.
Кусок моего “кода”:
for room in rooms: room_dict = {} number_room = room.get_Parameter(BuiltInParameter.ROOM_NUMBER).AsString() name_room = room.get_Parameter(BuiltInParameter.ROOM_NAME).AsString() roomSolid = getRoomGeometry(room).GetGeometry() for face in roomSolid.Faces: subs = getRoomGeometry(room).GetBoundaryFaceInfo(face) for sub in subs: Mats_id = doc.GetElement(sub.SpatialBoundaryElement.HostElementId).GetMaterialIds(False) for id in Mats_id: mat_area = doc.GetElement(sub.SpatialBoundaryElement.HostElementId).GetMaterialArea(id, False) mat_name = doc.GetElement(id).get_Parameter(BuiltInParameter.MATERIAL_NAME).AsString() room_dict[mat_name] = mat_area
Отредактировано NikitaSh (Сен. 19, 2018 09:41:10)
Офлайн
NikitaShНадо проверять наличие матерьяла в словаре и если есть суммировать площадь.
Добрый день, уважаемое питон-сообщество. Возникла проблема по сортировки словаря. Описываю ситуацию: Решил для себя накидать простую считалку материалов в помещениях (таких считалок много, но инструмент решил заточить под свои нужды.) Черчу я все Revit, “пишу” код в Dynamo/IronyPython. Значит получил я словарь, где ключ это имя материала, а значение площадь в комнате. Но словарь имеет ключи с одинаковыми значениями, т.е. одинаковыми материалами. Хотелось бы получить в итоги словарь, где ключ было уникальное имя материала, а значения площади суммировались для одинаковых материалов. Кусок моего “кода”:
Офлайн
defaultdict
Офлайн