首页 > 解决方案 > 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  

标签: pythonarrayspostgresql

解决方案


您可以将数据转换为列表的字典:

>>> 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

推荐阅读