在Python中为SQLITE中的每个键创建一个包含多个值的字典

时间:2014-01-30 02:34:22

标签: python sqlite dictionary

现在,我正试图想办法使用SQLITE数据库自动创建以下字典。

produce = {1:[2,4], 2:[1,2,3], 3:[2,3,4]} 

关键是工厂,附加的价值是产品,这个工厂能够生产。即1:[2,4] - >工厂一能够生产产品2和4.

在我的SQLITE数据库中,我有一个包含四个字段的表:idfactory [INT],idproduct [INT],production [BOOL]。然后我使用以下代码获取相关数据集:

cur.execute('SELECT idfactory,idproduct FROM production WHERE production=1')
result = cur.fetchall() 

我的想法是,用一个循环填充我的字典,用这样的东西:

for idfactory,idproduct in result:
    p[idfactory] = idproduct

但是,此代码会产生错误,并且也会出现问题,因为我的数据库中没有唯一的KEY。

我不太确定我的解释是否足够,但我们非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

dict的{​​{1}}方法可能有所帮助。 试试这个:

p = {}

for idfactory, idproduct in result:
    p.setdefault(idfactory, []).append(idproduct)

答案 1 :(得分:0)

defaultdict is faster比使用setdefault,而在我看来,这是一种更清洁的方式来执行相同的操作。如果要为所有未知密钥的查找假设一个空列表,请考虑使用此方法。

from collections import defaultdict

p = defaultdict(list)
for idfactory, idproduct in result:
    p[idfactory].append(idproduct)