我有一个像这样的字典列表:
[
{
'accountId': 952940,
'objectType': 'Creative',
'objectId': 1361295595
},
{
'accountId': 7037,
'objectType': 'Placement',
'objectId': 2713583698
},
{
'accountId': 7037,
'objectType': 'Placement',
'objectId': 271354409
},
{
'accountId': 7037,
'objectType': 'Ad',
'objectId': 1234565698
}
]
我想按accountId和objectType对它们进行分组,所以最终输出看起来像这样:
[
{
'accountId': 959740,
'objectType': 'Creative',
'objectId': 136139595
},
{
'accountId': 7037,
'objectType': 'Placement',
'objectId': [275765698,279984409]
},
{
'accountId': 7037,
'objectType': 'Ad',
'objectId': 1234565698
}
]
任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用以组术语为键的defaultdict
:
from collections import defaultdict
grouped = defaultdict(list)
for entry in my_list:
grouped[(entry['accountId'], entry['objectType'])].append(entry['objectId'])
new_list = [{'accountId': k[0], 'objectType': k[1], 'objectId': v}
for k, v in grouped.items()]
请注意,objectId
即使在单个项目中,也始终会在结果中包含一个列表。
答案 1 :(得分:0)
如果使用熊猫是可以接受的;尝试这种方式:
df = df.groupby(['accountId', 'objectType']).agg(list).reset_index()
print(df.to_dict(orient='records'))
[{'accountId': 7037, 'objectType': 'Ad', 'objectId': [1234565698]}, {'accountId': 7037, 'objectType': 'Placement', 'objectId': [2713583698, 271354409]}, {'accountId': 952940, 'objectType': 'Creative', 'objectId': [1361295595]}]