现在,我正试图想办法使用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。
我不太确定我的解释是否足够,但我们非常感谢任何帮助!
答案 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)