First of all, I'm still a newb to python so please take it easy on me.
I've done my research and I have a basic understanding of how to write a recursive function, but I'm totally confused at the task ahead of me.
I would really like some tips and pointers so I can do this myself to really understand.
Here's the task:
- Iterate through a dictionary
- check if there is a 'children' key
- if true, do something
- repeat
Here's the issue,
The 'option' key is nested in another key called 'children'. There for I would like to iterate through each 'children' key until they exist no more.
Here's what the code looks like without recursion. Of course it fails because its too explicate, too rigid.
#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....
I would like to loop through the dictionary and it's 'children' key until they don't exist anymore.
Here's some JSON you can copy and past this in http://www.jsoneditoronline.org/ to see what I'm working with.
{
"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,