Я все еще изучаю python, и мне все еще трудно работать с объектами, я пытаюсь написать программу, которая вычисляет критический путь набор действий в проекте, я смог получить критический путь к действиям, и они хранятся в виде списка вложенных объектов с каждым объектом, имеющим разные свойства, такие как id, предшественник и продолжительность, проблема i ' м, имеющий, чтобы распечатать результат правильно, я хочу, чтобы распечатать путь, который имеет самую длинную продолжительность и сам путь, который дает это значениеКак напечатать вложенный список объектов с наибольшей суммой в python
class criticalPath:
def __init__(self):
'''
Initialize all the variables we're going to use to calculate the critical path
'''
self.id = None
self.pred = tuple()
self.dur = None
self.est = None
self.lst = None
#list to store all the objects
self.all_objects = list()
def set_properties(self, name, predecessor, duration):
self.id = name
self.pred = tuple(predecessor)
self.dur = duration
def main():
#starting_nodes = list()
object_list = list()
A = criticalPath()
A.set_properties('A', '0', 3)
B = criticalPath()
B.set_properties('B', '0', 6)
C = criticalPath()
C.set_properties('C', 'A', 1)
D = criticalPath()
D.set_properties('D', 'B', 4)
tmp_list = list()
tmp_list.append(A)
tmp_list.append(C)
object_list.append(tmp_list)
tmp_list = list()
tmp_list.append(B)
tmp_list.append(D)
object_list.append(tmp_list)
print('The total duration of the project is {}'.format(max([sum([node.dur for node in object]) for object in object_list])))
#print(max(object_list.id, key=sum(object_list.dur)))
if __name__ == '__main__': main()
Я был в состоянии напечатать общую продолжительность которой в этот случай равен 10, последняя строка, которую я прокомментировал моя последняя попытка сравнить идентификатор объектов в объектных_листах на основе их индивидуальной продолжительности, которая является свойством «id» и «dur» для каждого объекта, поэтому в основном я хочу получить такой вывод
Критический путь проект B ==> D, а общая продолжительность проекта составляет 10