pythonpandasdataframedictionarydjango-context

Loop through nested dictionary


I have nested dictionary which look like this:

{
'location': {0: 'London', 1: 'London', 2: 'London', 3: 'London', 4: 'London', 5: 'London', 6: 'London'}, 
'attraction': {0: 'museum', 1: 'museum', 2: 'museum', 3: 'museum', 4: 'museum', 5: 'museum', 6: 'museum'},
'name': {0: 'London Museum', 1: 'British Museum', 2: 'Natural History Museum', 3: 'London's Docklands Museum', 4: 'Science Museum  ', 5: 'London Transport Museum ', 6: 'Victoria and Albert Museum'},
'rate': {0: 4.6, 1: 4.7, 2: 4.7, 3: 4.6, 4: 4.5, 5: 4.5, 6: 4.7}, 
'totalRates': {0: 13873, 1: 115863, 2: 13497, 3: 4528, 4: 51675, 5: 7349, 6: 42541},
'tag': {0: 'Muzeum', 1: 'Muzeum', 2: 'Muzeum', 3: 'Muzeum', 4: 'Muzeum', 5: 'Muzeum', 6: 'Muzeum'},
'address': {0: '150 London Wall', 1: 'Great Russell St', 2: 'Cromwell Rd', 3: '1 Warehouse. West India Quay. No. Hertsmere Rd', 4: 'Exhibition Rd', 5: 'Stare autobusy. pociągi i tramwaje Londynu', 6: 'Cromwell Rd'},
'description': {0: 'Some description', 1: 'Some description', 2: 'Some description', 3: 'Some description', 4: 'Some description', 5: 'Some description', 6: 'Some description'},
'image': {0: 'https://someImage.com/something', 1: 'https://someImage.com/something', 2: 'https://someImage.com/something', 3: 'https://someImage.com/something', 4: 'https://someImage.com/something', 5: 'https://someImage.com/something', 6: 'https://someImage.com/something'}
}

I would like to loop through and get information about every element which would look like this:

{
'location': 'London',
'attraction': 'museum',
'name': 'London Museum',
'rate': 4.6,
'totalRates': 13873,
'tag': 'Muzeum',
'address': '150 London Wall',
'description': 'Some description',
'image': 'https://someImage.com/something'
},
{
'location': 'London',
'attraction': 'museum',
'name': 'British Museum',
'rate': 4.7,
'totalRates': 115863,
'tag': 'Muzeum',
'address': 'Great Russell St',
'description': 'Some description',
'image': 'https://someImage.com/something'
},
ect...

The way i obtain this nested dictionary is by converting pandas.DataFrame with .to_dict() method.

Is it possible to get the result like above with looping through or converting dataframe any different way? I need the result as dictionary in order to show data via django context.


Solution

  • You need to specify orient=records in to_dict():

    >>> df.to_dict("records")
    
    [{'location': 'London',
      'attraction': 'museum',
      'name': 'London Museum',
      'rate': 4.6,
      'totalRates': 13873,
      'tag': 'Muzeum',
      'address': '150 London Wall',
      'description': 'Some description',
      'image': 'https://someImage.com/something'},
     {'location': 'London',
      'attraction': 'museum',
      'name': 'British Museum',
      'rate': 4.7,
      'totalRates': 115863,
      'tag': 'Muzeum',
      'address': 'Great Russell St',
      'description': 'Some description',
      'image': 'https://someImage.com/something'},
     {'location': 'London',
      'attraction': 'museum',
      'name': 'Natural History Museum',
      'rate': 4.7,
      'totalRates': 13497,
      'tag': 'Muzeum',
      'address': 'Cromwell Rd',
      'description': 'Some description',
      'image': 'https://someImage.com/something'},
     {'location': 'London',
      'attraction': 'museum',
      'name': "London's Docklands Museum",
      'rate': 4.6,
      'totalRates': 4528,
      'tag': 'Muzeum',
      'address': '1 Warehouse. West India Quay. No. Hertsmere Rd',
      'description': 'Some description',
      'image': 'https://someImage.com/something'},
     {'location': 'London',
      'attraction': 'museum',
      'name': 'Science Museum  ',
      'rate': 4.5,
      'totalRates': 51675,
      'tag': 'Muzeum',
      'address': 'Exhibition Rd',
      'description': 'Some description',
      'image': 'https://someImage.com/something'},
     {'location': 'London',
      'attraction': 'museum',
      'name': 'London Transport Museum ',
      'rate': 4.5,
      'totalRates': 7349,
      'tag': 'Muzeum',
      'address': 'Stare autobusy. pociągi i tramwaje Londynu',
      'description': 'Some description',
      'image': 'https://someImage.com/something'},
     {'location': 'London',
      'attraction': 'museum',
      'name': 'Victoria and Albert Museum',
      'rate': 4.7,
      'totalRates': 42541,
      'tag': 'Muzeum',
      'address': 'Cromwell Rd',
      'description': 'Some description',
      'image': 'https://someImage.com/something'}]