Как пройти через отношения между сотрудником и менеджером? - PullRequest
0 голосов
/ 05 февраля 2020

Имеется список пар идентификатора сотрудника и идентификатора менеджера, а также задан идентификатор менеджера, который выводит / возвращает иерархию менеджера, начиная с этого менеджера. Например, учитывая (manager_id, employee_id) как [(1,3), (2,3), (3,4)] и manager_id 4, вернуть {4:[3], 3:[1,2]}.

Вот мой код:

from collections import defaultdict

str = [(1,3), (2,3), (3,4), (5,4), (10,4), (6,2)]
hierarchy  = defaultdict(list)

def find_emp(mgr_id):
    for i in str:
        if mgr_id in i:
            if i[0] != mgr_id:
                hierarchy[mgr_id].append(i[0])
        else:
            continue

for val in hierarchy:
    for item in hierarchy[val]:
        print(item)
        find_emp(item)


print(find_emp(4))

Мой код не работает, так как он превышает максимальная глубина рекурсии Может ли кто-нибудь помочь мне идентифицировать сломанный кусок в моей логике c?

1 Ответ

0 голосов
/ 05 февраля 2020

Да, журнал ошибок может помочь на тонну ...

Но я подозреваю, что ваш код на самом деле терпит неудачу в самом внутреннем операторе if в пределах def find_emp (mgr_id):

Вы не можете перебирать кортеж в списке, подобном этому, должно быть что-то вроде этого:

     for i in str:
     ...
     if i[mgr_id][0] != mgr_id:
        hierarchy[mgr_id].append(i[mgr_id][0])

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...