Помогите реализовать вывод структуры реферальной системы, желательно на питоне
Нужна помощь
Предположим, что есть dict:
dict = {2:1,
3:1
4:3,
5:3,
6:5}
Где dict{'КОГО ПРИГЛАСИЛИ':'КТО ПРИГЛАСИЛ'}
Как вывести полную структуру от первого пользователя до последнего в таком виде:
structure = {
1:{
2:{},
3:{
4:{},
5:{
6:{}
},
},
},
},
structure не обязательно в dict, если есть более удобнее альтернативы
Ответы (1 шт):
Автор решения: Pavel Durmanov
→ Ссылка
In [73]: dict
Out[73]: {2: 1, 3: 1, 4: 3, 5: 3, 6: 5}
In [74]: def foo(data):
...: referrals, paths = {}, {}
...: for invited, inviter in data.items():
...: if inviter in paths:
...: paths[inviter][invited] = {}
...: paths[invited] = paths[inviter][invited]
...: else:
...: referrals.setdefault(inviter, {}).update({invited: {}})
...: paths[invited] = referrals[inviter][invited]
...: return referrals
...:
In [75]: foo(dict)
Out[75]: {1: {2: {}, 3: {4: {}, 5: {6: {}}}}}
Примечание: так как это иерархия, важно чтобы она была в правильном порядке (по возрастанию).