задача на иерархию

den2017

Новичок
Пользователь
Авг 20, 2020
3
0
1
На входе есть файл:
'''
foo
foo foo1
foo foo1 foo2 # foo is parent for foo1 and foo1 is parent for foo2 etc.
bar
bar bar1
bar bar1 bar2
doo
'''
Необходимо преобразовать файл в словарь типа
{
[foo1:foo] #foo is parent of foo1
[foo2:foo] #foo is parent of foo2 too
[foo2:foo1]
[bar1: bar]
[bar2: bar]
[bar2: bar1]
...
}

Так же есть массив, который может содержать одну или все значения как в словаре.

Значения в масиве и словаре надо сравнить так, что бы если имеется родитель среди переменных в массиве, то дочернее удалить, а родителя положить в новый массив.
Например: в массиве приходит foo2, foo, bar2
В этом случае нам надо foo2 отбросить, а foo переложить в новый массив так как foo2 имеет родителя в лице foo1, а foo1 является дочерним для foo. Так же переложить bar2 в новый массив так как у него нет родителей в исходном массиве.
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Что не получается?
 

den2017

Новичок
Пользователь
Авг 20, 2020
3
0
1
Что не получается?
все начиная с создания словаря, потому как нет опыта=), но оч надо.
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Необходимо преобразовать файл в словарь типа
{
[foo1:foo] #foo is parent of foo1
[foo2:foo] #foo is parent of foo2 too
[foo2:foo1]
В словаре не может быть повторяющихся ключей, возможно поэтому и не получается.
 

den2017

Новичок
Пользователь
Авг 20, 2020
3
0
1
В словаре не может быть повторяющихся ключей, возможно поэтому и не получается.
dict={
'foo1':['foo'] #foo is parent of foo1
'foo2':['foo'] #foo is parent of foo2 too
'bar1': ['bar']
'bar2': ['bar']
...
}

преобразовал , без дублирования, а вот как сделать сравнение???
Значения в масиве и словаре надо сравнить так, что бы если имеется родитель среди переменных в массиве, то дочернее удалить, а родителя положить в новый массив.
Например: в массиве приходит foo2, foo, bar2
В этом случае нам надо foo2 отбросить, а foo переложить в новый массив так как foo2 имеет родителя в лице foo1, а foo1 является дочерним для foo. Так же переложить bar2 в новый массив так как у него нет родителей в исходном массиве.
 

Roodger

Новичок
Пользователь
Авг 20, 2020
15
4
3
Например: в массиве приходит foo2, foo, bar2
Я тоже новичок и не совсем понял задачу. Вот этот массив надо сравнить со словарем или с другим массивом ? Если со словарем, то разве у bar2 нет родителя bar?
 

Форум IT Специалистов