Skip to content
Advertisement

How can I remove the upper array list from the list of dictionaries?

I’ve a list of dictionaries and want to get rid of the external list array. Take into consideration the array below,

[
{
    "stores": [
        {
            "id": 1,
            "storeName": "Green Mart",
            "lat": 12.905616,
            "lon": 77.610101,
            "offer": [
                {
                    "offer": "Get 10% OFF on Fruits & Vegetables"
                }
            ]
        },
        
    ]
}
]

My serializer looks like,

class storesSerializer(serializers.ModelSerializer):
  offer = StoreOffersSerializer(read_only=True, many=True)
  storeName = serializers.CharField(source="store_name")
  lat = serializers.FloatField(source="latitude")
  lon = serializers.FloatField(source="longitude")

  class Meta:
    model = Vendors
    fields = ('id', 'storeName', 'lat', 'lon', 'offer')

class CategoryStoreSerializer(serializers.ModelSerializer):
  stores = storesSerializer(read_only=True, many=True)

  class Meta:
    model = CategoryStore
    fields = ('stores',)

and the view definition is,

    if request.method == 'POST':
      c = CategoryStore.objects.filter(category=request.data['cat_id'])
      serializer = CategoryStoreSerializer(c, many=True)
      return Response(serializer.data)

Advertisement

Answer

You can use the index of list to refer to the inner dictionary and omit the outer bracket.

a = [
    {
        "stores": [
            {
                "id": 1,
                "storeName": "Green Mart",
                "lat": 12.905616,
                "lon": 77.610101,
                "offer": [
                    {
                        "offer": "Get 10% OFF on Fruits & Vegetables"
                    }
                ]
            },
    
        ]
    }
    ]

The below is the output of a[0]:

    {
        "stores": [
            {
                "id": 1,
                "storeName": "Green Mart",
                "lat": 12.905616,
                "lon": 77.610101,
                "offer": [
                    {
                        "offer": "Get 10% OFF on Fruits & Vegetables"
                    }
                ]
            },
    
        ]
    }
 
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement