Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Grouping an array of objects by key in python

Tags:

python

fastapi

Suppose I have an array of objects.

arr = [
        {'grade': 'A', 'name': 'James'},
        {'grade': 'B', 'name': 'Tom'},
        {'grade': 'A', 'name': 'Zelda'}
      ]

I want this result

{
   'A': [
            {'grade': 'A', 'name': 'James'},
            {'grade': 'A', 'name': 'Zelda'}
        ],
   'B': [ {'grade': 'B', 'name': 'Tom'} ]
}
like image 446
hendrixchord Avatar asked Sep 10 '25 14:09

hendrixchord


1 Answers

Use a dict and setdefault:

setdefault(key[, default])

If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None.

arr2 = {}
for d in arr:
    t = arr2.setdefault(d['grade'], [])
    t.append(d)
>>> arr2
{'A': [{'grade': 'A', 'name': 'James'}, {'grade': 'A', 'name': 'Zelda'}],
 'B': [{'grade': 'B', 'name': 'Tom'}]}
like image 87
Corralien Avatar answered Sep 13 '25 04:09

Corralien