파이썬 : for 루프를 재귀 함수로 변환

Boosted_d16

우선, 저는 아직 파이썬에 익숙하지 않으니 편하게 해주세요.

나는 내 연구를 마쳤고 재귀 함수를 작성하는 방법에 대한 기본적인 이해를 가지고 있지만 내 앞에 놓인 작업에 완전히 혼란 스럽습니다.

나는 정말로 이해하기 위해 이것을 할 수 있도록 몇 가지 팁과 조언을 정말로 원합니다.

작업은 다음과 같습니다.

  1. 사전을 통해 반복
  2. '어린이'키가 있는지 확인
  3. 사실이라면 뭔가를 해
  4. 반복

여기에 문제가 있습니다.

'option'키는 'children'이라는 다른 키에 중첩되어 있습니다. 더 이상 존재하지 않을 때까지 각 '자식'키를 반복하고 싶습니다.

다음은 재귀가없는 코드의 모습입니다. 물론 너무 명확하고 너무 엄격하기 때문에 실패합니다.

#level(one/two/three) refer to the level of nesting, easier for me to know where I am     in the loop.
#qdf_v2 is a particular type of file which is essentially a dictionary 

for levelone in qdf_v2['children']:
    if 'children' in levelone:
        store = options
        for leveltwo in levelone['children']:
            if 'children' in leveltwo:
                store = options
                for levelthree in leveltwo['children']:
                    if 'children' in levellevel:
                        repeat....

더 이상 존재하지 않을 때까지 사전을 반복하고 '자식'키입니다.

http://www.jsoneditoronline.org/복사하여 붙여 넣을 수있는 JSON이 있습니다 .

{
    "base": "http://panoptic-fearless.ldc.yougov.net/questionnaires/Test_maj_demo_newG4_2/versions/12/",
    "children": [
        {
            "name": "one",
            "children": [
                {
                    "name": "measures",
                    "children": [
                        {
                            "type": "single",
                            "options": {
                                "sort_order": "asending",
                                "chart_layout": "5",
                                "chart_type": "bar",
                                "chart_color": "green"
                            },
                            "text": "How much would you say you like or dislike P.E. at school? ",
                            "name": "KYS_Q1",
                            "responses": {
                                "items": [
                                    {
                                        "code": 1,
                                        "text": "I love it",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 2,
                                        "text": "I like it",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 3,
                                        "text": "I don’t like it",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 4,
                                        "text": "I hate it",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 5,
                                        "text": "Don’t know",
                                        "element": "qdf:response"
                                    }
                                ],
                                "element": "qdf:response_group"
                            },
                            "element": "qdf:question",
                            "export": [
                                {
                                    "name": "KYS_Q1"
                                }
                            ]
                        },
                        {
                            "children": [
                                {
                                    "type": "single",
                                    "options": {
                                        "sort_order": "asending",
                                        "chart_layout": "4",
                                        "chart_type": "pie",
                                        "chart_color": "pink"
                                    },
                                    "text": "{multiple order=\"randomize\" max=3} You said that you $event P.E. at school...<br/> Which THREE of the following are your MAIN reasons for not liking P.E. at school? (Please tick up to three options)",
                                    "name": "KYS_Q2",
                                    "responses": {
                                        "items": [
                                            {
                                                "code": 1,
                                                "text": "I don't like going outside in bad weather (e.g. in the cold, rain etc.)",
                                                "element": "qdf:response"
                                            },
                                            {
                                                "code": 2,
                                                "text": "I’m always picked last to join a team",
                                                "element": "qdf:response"
                                            },
                                            {
                                                "code": 3,
                                                "text": "I don't like my P.E. teacher/ don’t think they are very good",
                                                "element": "qdf:response"
                                            },
                                            {
                                                "code": 4,
                                                "text": "I’m not very good at it",
                                                "element": "qdf:response"
                                            },
                                            {
                                                "code": 5,
                                                "text": "I find the games/ sports we play boring",
                                                "element": "qdf:response"
                                            }
                                        ],
                                        "element": "qdf:response_group"
                                    },
                                    "element": "qdf:question",
                                    "export": [
                                        {
                                            "name": "KYS_Q2"
                                        }
                                    ]
                                },
                                {
                                    "type": "single",
                                    "options": {
                                        "sort_order": "asending",
                                        "chart_layout": "5",
                                        "chart_type": "line",
                                        "chart_color": "green"
                                    },
                                    "text": "{multiple order=\"randomize\"} Below are some feelings that people can have about doing P.E. at school...<br/> Which of the following words describe how you feel about doing P.E. at school? (Please tick all that apply) ",
                                    "name": "KYS_Q3A",
                                    "responses": {
                                        "items": [
                                            {
                                                "code": 1,
                                                "text": "Stressed",
                                                "element": "qdf:response"
                                            },
                                            {
                                                "code": 2,
                                                "text": "Scared",
                                                "element": "qdf:response"
                                            },
                                            {
                                                "code": 3,
                                                "text": "Worried",
                                                "element": "qdf:response"
                                            },
                                            {
                                                "code": 4,
                                                "text": "Sick",
                                                "element": "qdf:response"
                                            },
                                            {
                                                "code": 5,
                                                "text": "Tiring ",
                                                "element": "qdf:response"
                                            }
                                        ],
                                        "element": "qdf:response_group"
                                    },
                                    "element": "qdf:question",
                                    "export": [
                                        {
                                            "name": "KYS_Q3A"
                                        }
                                    ]
                                }
                            ],
                            "element": "qdf:section"
                        },
                        {
                            "type": "single",
                            "options": {
                                "sort_order": "desending",
                                "chart_layout": "5",
                                "chart_type": "bar",
                                "chart_color": "green"
                            },
                            "text": "{single order=\"randomize\"} You said that you $event P.E...<br/> Which ONE of the following is the main reason you like it? ",
                            "name": "KYS_Q4",
                            "responses": {
                                "items": [
                                    {
                                        "code": 1,
                                        "text": "I like getting outside/ not being in the classroom",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 2,
                                        "text": "I like my P.E. teacher",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 3,
                                        "text": "I’m good at it",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 4,
                                        "text": "I find the games/ sports fun",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 5,
                                        "text": "I find the games/ sports easy",
                                        "element": "qdf:response"
                                    }
                                ],
                                "element": "qdf:response_group"
                            },
                            "element": "qdf:question",
                            "export": [
                                {
                                    "name": "KYS_Q4"
                                }
                            ]
                        }
                    ],
                    "element": "qdf:page"
                }
            ],
            "element": "qdf:module"
        },
        {
            "name": "two",
            "children": [
                {
                    "name": "test",
                    "children": [
                        {
                            "type": "single",
                            "options": {
                                "sort_order": "asending",
                                "chart_layout": "5",
                                "chart_type": "bar",
                                "chart_color": "green"
                            },
                            "text": "{multiple order=\"randomize\"}Below are some feelings that people can have about doing P.E at school...<br/> Which of the following words describe how you feel about doing P.E. at school? (Please tick all that apply)   ",
                            "name": "KYS_Q5A",
                            "responses": {
                                "items": [
                                    {
                                        "code": 1,
                                        "text": "Energised/ Awake",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 2,
                                        "text": "Excited",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 3,
                                        "text": "Relaxed",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 4,
                                        "text": "Confident",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 5,
                                        "text": "Happy",
                                        "element": "qdf:response"
                                    }
                                ],
                                "element": "qdf:response_group"
                            },
                            "element": "qdf:question",
                            "export": [
                                {
                                    "name": "KYS_Q5A"
                                }
                            ]
                        },
                        {
                            "type": "single",
                            "options": {
                                "sort_order": "asending",
                                "chart_layout": "25",
                                "chart_type": "column",
                                "chart_color": "orange"
                            },
                            "text": "{multiple order=\"randomize\"} For the following question please do not be afraid to be as honest as possible, no one else will be told your personal answers. <br/> Which of the following have you EVER done in order to avoid taking part in P.E. at school? (Please tick all that apply) ",
                            "name": "KYS_Q6",
                            "responses": {
                                "items": [
                                    {
                                        "code": 1,
                                        "text": "Lied about forgetting my kit",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 2,
                                        "text": "Lied about an injury",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 3,
                                        "text": "Lied about feeling unwell",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 4,
                                        "text": "Faked a note from my parents/ guardian",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 5,
                                        "text": "Faked a note from my doctor/ health professional",
                                        "element": "qdf:response"
                                    }
                                ],
                                "element": "qdf:response_group"
                            },
                            "element": "qdf:question",
                            "export": [
                                {
                                    "name": "KYS_Q6"
                                }
                            ]
                        },
                        {
                            "type": "single",
                            "options": {
                                "sort_order": "asending",
                                "chart_layout": "5",
                                "chart_type": "bar",
                                "chart_color": "green"
                            },
                            "text": "{multiple order=\"randomize\"} For the following question, please think about the teacher who has taught you P.E. MOST recently and if you have more than one teacher teaching you P.E. please think about the one who has taught you most often. <br/>  Which of the following statements do you agree with? (Please tick all that apply)",
                            "name": "KYS_Q7",
                            "responses": {
                                "items": [
                                    {
                                        "code": 1,
                                        "text": "My P.E. teacher inspires me to do more exercise",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 2,
                                        "text": "My P.E. teacher motivates me to take part in P.E. lessons",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 3,
                                        "text": "My P.E. teacher scares me",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 4,
                                        "text": "My P.E. teacher makes P.E. boring",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 5,
                                        "text": "My P.E. teacher makes P.E. fun",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 6,
                                        "text": "My P.E. teacher makes P.E. difficult/ hard",
                                        "element": "qdf:response"
                                    }
                                ],
                                "element": "qdf:response_group"
                            },
                            "element": "qdf:question",
                            "export": [
                                {
                                    "name": "KYS_Q7"
                                }
                            ]
                        },
                        {
                            "type": "single",
                            "options": {
                                "sort_order": "asending",
                                "chart_layout": "5",
                                "chart_type": "bar",
                                "chart_color": "green"
                            },
                            "text": "{multiple order=\"randomize\"} What would make you like P.E. more? (Please tick all that apply)",
                            "name": "KYS_Q8",
                            "responses": {
                                "items": [
                                    {
                                        "code": 1,
                                        "text": "If the P.E. teacher was nicer to me",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 2,
                                        "text": "If more lessons took place indoors (e.g. in the sports hall or a gym)",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 3,
                                        "text": "If more lessons took place outdoors",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 4,
                                        "text": "If we did more interesting sports/ activities",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 5,
                                        "text": "If we had more choice of the types of sport we had to do",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "code": 6,
                                        "text": "If we could wear what we wanted for the lesson",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "options": {
                                            "fixed": true
                                        },
                                        "children": [
                                            {
                                                "export": [
                                                    {
                                                        "name": "KYS_Q8other"
                                                    }
                                                ],
                                                "name": "KYS_Q8other",
                                                "type": "open",
                                                "element": "qdf:question"
                                            }
                                        ],
                                        "code": 7,
                                        "text": "Other ",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "options": {
                                            "xor": true,
                                            "fixed": true
                                        },
                                        "code": 8,
                                        "text": "Don’t know",
                                        "element": "qdf:response"
                                    },
                                    {
                                        "options": {
                                            "xor": true,
                                            "fixed": true
                                        },
                                        "code": 9,
                                        "text": "Not applicable – nothing would make me like P.E. more than I already do",
                                        "element": "qdf:response"
                                    }
                                ],
                                "element": "qdf:response_group"
                            },
                            "element": "qdf:question",
                            "export": [
                                {
                                    "name": "KYS_Q8"
                                }
                            ]
                        }
                    ],
                    "element": "qdf:page"
                }
            ],
            "element": "qdf:module"
        },
        {
            "children": [
                {
                    "children": [
                        {
                            "text": "​\n",
                            "element": "qdf:text"
                        }
                    ],
                    "element": "qdf:page"
                }
            ],
            "element": "qdf:module"
        }
    ],
    "panelid": 13,
    "created": "#2014-01-10T15:57:18.594000+00:00#",
    "typespec": {
        "src": "/questionnaires/typespecs/initial.qdf",
        "element": "qdf:typespec"
    },
    "qdf-ext:ext": [
        "meaningful-page-names"
    ],
    "element": "qdf:questionnaire",
    "builtin": {
        "src": "/questionnaires/builtins/initial.qdf",
        "element": "qdf:typedef"
    },
    "committer": "majeed.sahebzadha",
    "name": "Test_maj_demo_newG4_2",
    "commit message": "added a new module within a module"
}
Jonrsharpe

다음과 같이 접근합니다.

def recursive(input, output=None):
    if output is None:
        output = {} # container to store results
    if 'children' in input:
        # do whatever, add things to output
        recursive(input['children'], output)
    return output

이런 식으로 output딕셔너리는 모든 반복 깊이에 액세스 할 수 return있으며 마지막에 모든 내용으로 편집됩니다. 이는 return재귀 호출 을 명시 적으로 다룰 필요가 없음을 의미 합니다.

정확히 무엇을 가지고 있는지에 따라 다음과 같이 보일 수 있습니다.

def recursive(input, output=None):
    if output is None:
        output = {} # container to store results
    if 'children' in input:
        for child in input['children']:
            # do whatever, add things to output
            recursive(child, output)
    return output    

그리고 output다른 컨테이너 (예 :) list수 있습니다 set.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이 함수를 재귀 함수로 변환하는 방법

분류에서Dev

재귀 함수를위한 파이썬 전역 변수

분류에서Dev

이 반복 함수를 재귀로 변환

분류에서Dev

반복 함수를 재귀로 변환

분류에서Dev

Java에서 재귀 함수로 중첩 루프 변환

분류에서Dev

재귀 함수 "무한"루프가 같은 수를 반환하는 이유

분류에서Dev

일반 루프로의 재귀 변환

분류에서Dev

재귀 함수를 사용하여 파이썬으로 합산

분류에서Dev

재귀를 사용하여 정수를 이진수로 변환

분류에서Dev

파이썬 재귀 함수

분류에서Dev

파이썬 "재귀"함수에서 전역 변수를 재설정하는 방법은 무엇입니까?

분류에서Dev

재귀 가변 템플릿 함수를 반복으로 변환

분류에서Dev

데이터를 공유하는 파이썬 재귀 인스턴스 변수

분류에서Dev

이 재귀 함수를 반복 함수로 변환하는 방법은 무엇입니까?

분류에서Dev

이 재귀 함수를 반복 함수로 변환하는 방법은 무엇입니까?

분류에서Dev

파이썬 재귀 함수가 반환되지 않음

분류에서Dev

튜플을 반환하는 재귀 함수 파이썬

분류에서Dev

Scala에서 루프 문제를 재귀 솔루션으로 변환

분류에서Dev

값을 반환하는 재귀 파이썬 함수를 어떻게 얻을 수 있습니까?

분류에서Dev

재귀 메서드 (재귀가 루프 내에서 수행됨)를 반복 메서드로 변환

분류에서Dev

재귀 순열 함수를 반복으로 변환하는 Python

분류에서Dev

재귀 함수를 트램폴린으로 변환하는 JS

분류에서Dev

재귀 함수를 반복으로 변환

분류에서Dev

Python3 재귀, for 루프, 함수가 이상한 출력을 반환 함

분류에서Dev

누군가이 C # 재귀 함수를 Java로 변환하도록 도와 줄 수 있습니까?

분류에서Dev

for 루프 재귀 함수에서 이전 n 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

파이썬 목록을 numpy.ndarray로 재귀 적으로 변환

분류에서Dev

웹 사이트를 PDF로 변환 (재귀 적으로)

분류에서Dev

const 매개 변수로 ac 재귀 함수를 컴파일 할 때 gcc 동작

Related 관련 기사

  1. 1

    이 함수를 재귀 함수로 변환하는 방법

  2. 2

    재귀 함수를위한 파이썬 전역 변수

  3. 3

    이 반복 함수를 재귀로 변환

  4. 4

    반복 함수를 재귀로 변환

  5. 5

    Java에서 재귀 함수로 중첩 루프 변환

  6. 6

    재귀 함수 "무한"루프가 같은 수를 반환하는 이유

  7. 7

    일반 루프로의 재귀 변환

  8. 8

    재귀 함수를 사용하여 파이썬으로 합산

  9. 9

    재귀를 사용하여 정수를 이진수로 변환

  10. 10

    파이썬 재귀 함수

  11. 11

    파이썬 "재귀"함수에서 전역 변수를 재설정하는 방법은 무엇입니까?

  12. 12

    재귀 가변 템플릿 함수를 반복으로 변환

  13. 13

    데이터를 공유하는 파이썬 재귀 인스턴스 변수

  14. 14

    이 재귀 함수를 반복 함수로 변환하는 방법은 무엇입니까?

  15. 15

    이 재귀 함수를 반복 함수로 변환하는 방법은 무엇입니까?

  16. 16

    파이썬 재귀 함수가 반환되지 않음

  17. 17

    튜플을 반환하는 재귀 함수 파이썬

  18. 18

    Scala에서 루프 문제를 재귀 솔루션으로 변환

  19. 19

    값을 반환하는 재귀 파이썬 함수를 어떻게 얻을 수 있습니까?

  20. 20

    재귀 메서드 (재귀가 루프 내에서 수행됨)를 반복 메서드로 변환

  21. 21

    재귀 순열 함수를 반복으로 변환하는 Python

  22. 22

    재귀 함수를 트램폴린으로 변환하는 JS

  23. 23

    재귀 함수를 반복으로 변환

  24. 24

    Python3 재귀, for 루프, 함수가 이상한 출력을 반환 함

  25. 25

    누군가이 C # 재귀 함수를 Java로 변환하도록 도와 줄 수 있습니까?

  26. 26

    for 루프 재귀 함수에서 이전 n 변수를 전달하는 방법은 무엇입니까?

  27. 27

    파이썬 목록을 numpy.ndarray로 재귀 적으로 변환

  28. 28

    웹 사이트를 PDF로 변환 (재귀 적으로)

  29. 29

    const 매개 변수로 ac 재귀 함수를 컴파일 할 때 gcc 동작

뜨겁다태그

보관