IndexError: list index out of range while converting list into dictionary

Question:

input_list=[[('This civilisation flourished between 2500 __________________ and 1900 __________________ in what today is Pakistan and northwestern India and was noted for its urban planning baked brick houses elaborate drainage and water supply.',
   'This civilisation flourished between 2500 BCE and 1900 BCE in what today is Pakistan and northwestern India and was noted for its urban planning baked brick houses elaborate drainage and water supply.'),
  'BCE'],
 [('Around the same time IndoAryan tribes moved into the Punjab from __________________ Asia in several waves of migration.',
   'Around the same time IndoAryan tribes moved into the Punjab from Central Asia in several waves of migration.'),
  'Central']]


output= [{'question': 'This civilisation flourished between 2500 __________________ and 1900 __________________ in what today is Pakistan and northwestern India and was noted for its urban planning baked brick houses elaborate drainage and water supply.',
   'context':'This civilisation flourished between 2500 BCE and 1900 BCE in what today is Pakistan and northwestern India and was noted for its urban planning baked brick houses elaborate drainage and water supply.',
  'answer': 'BCE'},
 {'question': 'Around the same time IndoAryan tribes moved into the Punjab from __________________ Asia in several waves of migration.',
  'context': 'Around the same time IndoAryan tribes moved into the Punjab from Central Asia in several waves of migration.',
  'answer': 'Central'}]

I have tried the above method but it is giving me an index error. and I think it is due to the round brackets.

generated_answer=[{'question': l[0], 'context':l[1],'answer': l[2]} for l in input_list]

so how can I get output as shown?

Asked By: dilip kukadiya

||

Answers:

You could do it like this:

output = [{'question': q, 'context': c, 'answer': a} for (q, c), a in input_list]
Answered By: Vlad

Your data has pattern like this
[[('question','context'),'answer'],...]

Try this

input_list=[[('This civilisation flourished between 2500 __________________ and 1900 __________________ in what today is Pakistan and northwestern India and was noted for its urban planning baked brick houses elaborate drainage and water supply.',
   'This civilisation flourished between 2500 BCE and 1900 BCE in what today is Pakistan and northwestern India and was noted for its urban planning baked brick houses elaborate drainage and water supply.'),
  'BCE'],
 [('Around the same time IndoAryan tribes moved into the Punjab from __________________ Asia in several waves of migration.',
   'Around the same time IndoAryan tribes moved into the Punjab from Central Asia in several waves of migration.'),
  'Central']]
generated_answer=[{'question': l[0][0], 'context':l[0][1],'answer': l[1]} for l in input_list]
print(generated_answer)

Output

[{'question': 'This civilisation flourished between 2500 __________________ and 1900 __________________ in what today is Pakistan and northwestern India and was noted for its urban planning baked brick houses elaborate drainage and water supply.',
 'context': 'This civilisation flourished between 2500 BCE and 1900 BCE in what today is Pakistan and northwestern India and was noted for its urban planning baked brick houses elaborate drainage and water supply.',
 'answer': 'BCE'}, 
{'question': 'Around the same time IndoAryan tribes moved into the Punjab from __________________ Asia in several waves of migration.',
 'context': 'Around the same time IndoAryan 
tribes moved into the Punjab from Central Asia in several waves of migration.', 
'answer': 'Central'}]
Answered By: codester_09
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.