2015-01-21 65 views
0

获取字典我有表,看起来像这样:从psycopg2

--------+-------+ 
     8 |  8 | 
     8 |  9 | 
     8 | 10 | 
     8 | 11 | 
     8 | 29 | 
     8 | 30 | 
     8 | 33 | 
     8 | 34 | 
     9 |  8 | 
     9 |  9 | 
     9 | 10 | 
     9 | 11 | 
     9 | 12 | 
     9 | 13 | 
     9 | 19 | 

我想在Python中得到的是从第一列键的字典和值是第二列的列表(即dic[8]=[8,9,10,11,29,30,33,34]) 。

现在,我从表格中获取一个列表并自己填充字典,但浪费了太多时间。

什么将是最有效的方法呢?

+0

你用什么来填充它自己? – 2015-01-21 11:16:44

+0

@JonClements只是遍历列表,检查密钥是否存在于字典中。 – khajvah 2015-01-21 11:18:18

+2

你有没有试过['array_agg'](http://www.postgresql.org/docs/8.4/static/functions-aggregate.html)? – 2015-01-21 11:19:05

回答

3

而不是做在客户端的聚合,PostgreSQL支持的array_agg功能,你用GROUP BY使用,如:

SELECT col1, array_agg(col2) FROM table_name GROUP BY col1 

只要你只返回两列,然后你可以使用dict关于游标/查询,例如:

my_lookup = dict(cursor)