python - 整合python字典
问题描述
我需要帮助将这些字典转换为单个字典。见下文
data = [{'x': 3, 'y': 3}, {'x': 5, 'y': 3}, {'x': 1, 'y': 4}]
我想将其转换为以下内容:
{'x':[3,5,1], 'y':[3,3,4]
谢谢你!
解决方案
您可以使用字典理解:
data = [{'x': 3, 'y': 3}, {'x': 5, 'y': 3}, {'x': 1, 'y': 4}]
new_data = {i:[c.get(i) for c in data] for i in ['x', 'y']}
输出:
{'y': [3, 3, 4], 'x': [3, 5, 1]}
但是,为了更通用,您可以使用reduce
:
from functools import reduce
new_result = {
i : [c.get(i) for c in data]
for i in set(reduce(
lambda x, y:list(getattr(x, 'keys', lambda :x)()) + list(y.keys()), data)
)
}
编辑:较短的通用解决方案:
new_s = {i for b in map(dict.keys, data) for i in b}
new_data = {i:[c.get(i) for c in data] for i in new_s}
推荐阅读
- javascript - 用 Jest 从 NPM 模块模拟一个类,给我一个构造函数问题
- javascript - 上传excel文件并在ajax java中使用post请求操作数据后如何导出csv文件?
- php - 当会话超时并且我尝试在该时间之后注销时,为什么我会在 Laravel 中收到错误
- r - 当`df1$DateTime_1`在5秒间隔内与`df2$DateTime_2`匹配时,如何将变量`df1$DateTime_1`添加到`df2`
- python - 在 JupyterLab 中以编程方式运行单元格
- python - 如何水平打印html表中的python列表(django)
- javascript - 如何从登录页面获取值到反应js中的所有其他组件
- android - 无法识别颤振接收者
- android - 在实时纬度和经度之间绘制路线
- apache-curator - 馆长 LeaderLatch EOFException 关闭