在python中按键对对象数组进行分组

jon*_*ode 3 python fastapi

假设我有一个对象数组。

arr = [
        {'grade': 'A', 'name': 'James'},
        {'grade': 'B', 'name': 'Tom'},
        {'grade': 'A', 'name': 'Zelda'}
      ]
Run Code Online (Sandbox Code Playgroud)

我想要这个结果

{
   'A': [
            {'grade': 'A', 'name': 'James'},
            {'grade': 'A', 'name': 'Zelda'}
        ],
   'B': [ {'grade': 'B', 'name': 'Tom'} ]
}
Run Code Online (Sandbox Code Playgroud)

Cor*_*ien 6

使用字典和setdefault

设置默认值(键[,默认值])

如果 key 在字典中,则返回它的值。如果不是,则插入具有默认值的键并返回默认值。默认值默认为无。

arr2 = {}
for d in arr:
    t = arr2.setdefault(d['grade'], [])
    t.append(d)
Run Code Online (Sandbox Code Playgroud)
>>> arr2
{'A': [{'grade': 'A', 'name': 'James'}, {'grade': 'A', 'name': 'Zelda'}],
 'B': [{'grade': 'B', 'name': 'Tom'}]}
Run Code Online (Sandbox Code Playgroud)