У меня есть список значений следующим образом:
[1,2,3,4,5,6,7,8,9]
Далее у меня также есть диктат зависимостей следующего формата:
{1 : [2,3], 3: [4], 6: [7,8,9]}
Это означает, что 2,3
должны появиться в списке до 1
, 4
должны появиться в списке до 3
, а 7
, 8
, 9
должны появиться в списке до 6.
Следовательно, допустимой сортировкой будет:
[4,2,3,1,7,8,9,6]
На основе этого примера я написал код, который может разбить список на три подмножества:
- элементы, которые появляются только наRHS (все они должны быть в верхней части списка) ->
7
, 8
, 9
, 4
, 2
- элементы, которые появляются только на LHS (их можно разместитьвнизу списка) ->
1
, 6
- Элементы, которые отображаются как на RHS, так и на LHS ->
3
Я борюсь снаписание кода для сортировки предметов, которые попадают в третью категорию:
Что было бы хорошим способом сортировки этих предметов?
РЕДАКТИРОВАТЬ:
supersetR = set({})
supersetL = set({})
for dependency in dependencies:
supersetR = supersetR.union(dependencies[dependency])
supersetL.add(dependency)
onlyL = supersetL - supersetR
onlyR = supersetR - supersetL
LandR = supersetL.intersection(supersetR)