Допустим, есть словарь, описывающий зависимости запись, вдоль линий:Python кода в список зависимостей, избегая петли
deps = {
'A': ['B', 'C', 'D'],
'B': ['C', 'E'],
'C': ['D', 'F'],
'D': ['C', 'G'],
'E': ['A'],
'H': ['N'],
}
это означает, что элемент «A» зависит от предметов «B», «C», и «D» и т. Д. Очевидно, это может быть произвольной сложности.
Как вы пишете функцию get_all_deps(item)
, которая дает вам список всех зависимостей item
, без дублей и без item
. Например:
> get_all_deps('H')
['N']
> get_all_deps('A')
['B', 'C', 'D', 'E', 'F', 'G']
> get_all_deps('E')
['A', 'B', 'C', 'D', 'F', 'G']
Я ищу сжатый код - в идеале - единственную рекурсивную функцию. Производительность не очень важна для моего случая использования - мы говорим о довольно небольших графиках зависимостей (например, несколько десятков наименований)
О, как транзитивное закрытие зависимостей? – Tagc
вы сделали попытку или вы просто хотите получить ответ? – depperm
Добро пожаловать в StackOverflow. Прочтите и следуйте инструкциям по отправке в справочной документации. [по теме] (http://stackoverflow.com/help/on-topic) и [как спросить] (http://stackoverflow.com/help/how-to-ask) применяются здесь. StackOverflow не является кодовым или учебным сервисом. Вам дана ссылка на поиск по ширине; повторите попытку, когда у вас возникнет проблема с реализацией. – Prune