Форум сайта python.su
Есть словарь вида:
{ 1: {'name': 'Земля', 'parent': None}, 2: {'name': 'Евразия': 'parent': 1}, 3: {'name': 'Китай': 'parent': 2}, 4: {'name': 'Пекин': 'parent': 3}, 5: {'name': 'Австралия': 'parent': 1}, 6: {'name': 'Сидней': 'parent': 5} }
Офлайн
>>> data = { 1: {'name': 'Земля', 'parent': None}, 2: {'name': 'Евразия', 'parent': 1}, 3: {'name': 'Китай', 'parent': 2}, 4: {'name': 'Пекин', 'parent': 3}, 5: {'name': 'Австралия', 'parent': 1}, 6: {'name': 'Сидней', 'parent': 5} } >>> def find_parent(idx, acum=None): acum = acum or [] if not idx is None: acum.append(idx) return find_parent(data[idx]["parent"], acum) return acum >>> find_parent(4) [4, 3, 2, 1]
Отредактировано Rodegast (Апрель 25, 2023 18:46:37)
Офлайн
>>> def f(dct, index): ... out = [] ... while index is not None: ... index = dct[index]['parent'] ... if index is not None: ... out.append(dct[index]['name']) ... return out ... >>> data = { ... 1: {'name': 'Земля', 'parent': None}, ... 2: {'name': 'Евразия', 'parent': 1}, ... 3: {'name': 'Китай', 'parent': 2}, ... 4: {'name': 'Пекин', 'parent': 3}, ... 5: {'name': 'Австралия', 'parent': 1}, ... 6: {'name': 'Сидней', 'parent': 5} ... } >>> >>> f(data, 4) ['Китай', 'Евразия', 'Земля'] >>> f(data, 6) ['Австралия', 'Земля'] >>> f(data, 1) [] >>>
Офлайн