python - 汇总列表中的信息
问题描述
假设我有一个清单:
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
执行上述转换的最简单方法是什么?
解决方案
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'}]
推荐阅读
- python - 字符串格式和浮点数
- node.js - 节点代码在功能与功能外时的结果差异
- node.js - Certbot 未能对某些域进行身份验证
- java - ViewGroup 落后于 ViewPager Android Studio
- python - 如何在while循环中计算总和和平均值(python?)
- typescript - 如何在开玩笑的单元测试中使用 vue3 + typescript 在 shallowMount() 中添加假商店?
- reactjs - 在重定向时在 GetServerSideProps 中发送警报?
- asp.net - OAuth 刷新令牌无法始终如一地工作
- api - 更改新标签墙纸的 Chrome 扩展程序 - 不在 Chrome 操作系统中
- javascript - Django 成功提交表单