Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中为SQLITE中的每个键创建具有多个值的字典_Python_Sqlite_Dictionary - Fatal编程技术网

在Python中为SQLITE中的每个键创建具有多个值的字典

在Python中为SQLITE中的每个键创建具有多个值的字典,python,sqlite,dictionary,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 idfa

现在,我正试图找到一种使用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
但是,这段代码会产生错误,而且也会有问题,因为我的数据库中没有唯一的键

我不太确定我的解释是否充分,但如果有任何帮助,我将不胜感激

口述的方法可能会有所帮助。 试试这个:

p = {}

for idfactory, idproduct in result:
    p.setdefault(idfactory, []).append(idproduct)
在我看来,比使用一种更干净的方式来执行相同的操作要好得多。如果您想为未知键的所有查找假定一个空列表,请考虑使用此。

from collections import defaultdict

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

可能是这个吗<代码>对于id,生产结果:p.setdefault(id,[])。追加(生产)并检查
结果
是否为空,然后再尝试对其进行迭代!非常感谢,做得很好!我将研究setdefault选项。非常感谢您的评论!我也会研究你的建议。在.setdefault上使用defaultdict的实际含义是什么?