首页 > 解决方案 > 汇总列表中的信息

问题描述

假设我有一个清单:

INPUT=[{'id': 1, 'context': 'this is q1', 'content': 'this is ch1'},
{'id': 1, 'context': 'this is q1', 'content': 'this is ch2'},
{'id': 1, 'context': 'this is q1', 'content': 'this is ch3'}, 
{'id': 2, 'context': 'this is q12', 'content': 'this is ch14'}]

兑换:

OUTPUT=[{'id': 1, 'context': 'this is q1', 'content': ['this is ch1','this is ch2','this is ch3']},

{'id': 2, 'context': 'this is q12', 'content': 'this is ch14'}]

python执行上述转换的最简单方法是什么?

标签: pythonpython-3.xlistdictionary

解决方案


Using itertools.groupby

Demo:

from itertools import groupby

INPUT=[{'id': 1, 'context': 'this is q1', 'content': 'this is ch1'},
{'id': 1, 'context': 'this is q1', 'content': 'this is ch2'},
{'id': 1, 'context': 'this is q1', 'content': 'this is ch3'}, 
{'id': 2, 'context': 'this is q12', 'content': 'this is ch14'}]

res = []
for key, group in groupby(INPUT, lambda x: (x["id"])):
    temp = []
    for thing in group:
        temp.append(thing["content"])
    res.append({"id": key, "context": thing["context"], 'content': temp})
print(res)

Output:

[{'content': ['this is ch1', 'this is ch2', 'this is ch3'], 'id': 1, 'context': 'this is q1'}, {'content': ['this is ch14'], 'id': 2, 'context': 'this is q12'}]

推荐阅读