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