python - Python 将 PostgreSQL 查询的结果处理为数组
问题描述
使用 psycopg2 的 postgres 查询的结果是这样的:
[(1, 20386, 3), (2, 20386, 5), (3, 20386, 5), (1, 20387, 2), (2, 20387, 2), (3, 20387, 3), (1, 20390, 3), (2, 20390, 3), (3, 20390, 3)]
我需要重新排序结果,这样(至少在 PHP 中)它看起来像这样:
user['20386'][1]=3
user['20386'][2]=5
user['20386'][3]=5
user['20387'][1]=2
user['20387'][2]=2
user['20387'][3]=3
user['20390'][1]=3
user['20390'][2]=3
user['20390'][3]=3
解决方案
您可以将数据转换为列表的字典:
>>> user = {}
>>> for key in {item[1] for item in data}:
... user[key] = [item[2] for item in data if item[1] == key]
user
看起来像这样:
>>> user
{20386: [3, 5, 5], 20387: [2, 2, 3], 20390: [3, 3, 3]}
但是请注意,列表从 0 开始索引:
>>> user[20386]
[3, 5, 5]
>>> user[20386][0]
3
>>> user[20386][1]
5
推荐阅读
- ag-grid - Ag-grid 列重新排序和 columnDef 更新
- python - 打开多线程后与 selenium 实例交互
- c# - c# npoi lib:如何在同一行中生成包含 2 个表的 word doc
- node.js - 如何使用 jwt/express/node 从当前用户获取令牌
- php - (PHP) 在主文件中的 HTML 中查找标签
- sql-server - 我们可以使用 tedious-connection-pool 类型“azure-active-directory-msi-app-service”来连接 Azure-AD SQL Server 吗?
- e-commerce - 与自定义页面一起使用的网上应用店 API
- vba - 删除循环中的项目错误 - 无法获取所选属性
- r - R - igraph:具有相同 y 轴的重叠节点
- assembly - 在汇编中显示字符的 ASCII 码