0 / 0 / 0
Регистрация: 18.03.2014
Сообщений: 24
|
||||||
1 | ||||||
Прерывание рекурсии08.06.2016, 10:03. Показов 7666. Ответов 5
Метки нет Все метки)
(
Знатоки, ну помогите. Код ниже делает обход вложенных словарей и при нахождении необходимого ключа должен свернуть все открытые рекурсии и вернуть значение self.Type = FeatureClass. Но сворачивает только нижний поток и упорно возвращается выше, естественно заменяя значение self.Type на пустое значение в своём пространстве имён. Как после выполнения условия if sField in listGeometryFields остановить все порождённые рекурсии и выйти из функции?
0
|
|
08.06.2016, 10:03 | |
Ответы с готовыми решениями:
5
Ошибка в рекурсии Оптимизация рекурсии Глубина рекурсии и поведение программы |
0 / 0 / 0
Регистрация: 18.03.2014
Сообщений: 24
|
|
08.06.2016, 11:02 [ТС] | 3 |
В экземпляре класса у нас уже есть словарь. Т.е. его не использовать, а передавать его ещё раз в функцию? Как то тоже некрасиво... Буду делать без объекта self.objSubDict, думала есть способ их всех сразу прибить.
0
|
![]() |
|||||||||||
08.06.2016, 15:32 | 4 | ||||||||||
Передавать не его, а содержащийся в нём дочерний словарь. По-моему, это очевидно следует из сути рекурсии.
Зачем вам лишний объект, он вообще не при делах тут. Он начнёт свою рекурсию, там не разберётесь вообще никогда. Добавлено через 11 минут Держите.
Пардон, косячок. Вот так надо:
0
|
438 / 430 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
|
||||||
08.06.2016, 15:42 | 5 | |||||
0
|
0 / 0 / 0
Регистрация: 18.03.2014
Сообщений: 24
|
||||||
09.06.2016, 12:00 [ТС] | 6 | |||||
oldnewyear, так не пойдёт, у меня
sLayer = 'node', dictLayer[self.sLayer] - {'node': {'coordinate': {'lat': ["<type 'float'>", u'20.1119003296'], 'zlevel': ["<type 'int'>", u'0'], 'lon': ["<type 'float'>", u'-102.564788818'], 'z_coord': ["<type 'int'>", u'0']}, 'node_id': ["<type 'long'>", u'1121999621'], 'is_aligned': ["<type 'bool'>", u'False']}} Будет крутиться на одном месте передавая в sField 'node' и выходя на рекурсию. Добавлено через 32 минуты dondublon, это работает, сохраню себе на будующее, спасибо. Я вчера всё-таки сделала с созданием нового объекта класса в классе. Но не так как хотелось раньше. Мне всё равно нужен был полный список полей, я его вычитала, а потом просто по нему прошлась, определяя есть ли нужное мне. А просто список, без прерывания номально вычитывает:
0
|
09.06.2016, 12:00 | |
Помогаю со студенческими работами здесь
6
Объясните механизм рекурсии (Лутц стр. 539) Вычисление суммы списка с вложенными списками посредством рекурсии Работа рекурсии Python3 неправильная работа рекурсии в некоторых случаях Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |