Home > database >  IndexError: list index out of range while converting list into dictionary
IndexError: list index out of range while converting list into dictionary

Time:08-24

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?

CodePudding user response:

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'}]

CodePudding user response:

You could do it like this:

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