2014-01-30 3 views
0

바로 지금, 다음 사전을 자동으로 생성하기 위해 SQLite 데이터베이스를 사용하는 방법을 알아 내려고하고 있습니다.Python의 SQLite에서 모든 키에 대해 여러 값으로 사전 만들기

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

키는 공장 출하시 제품에 부착 된 값이며이 팩터 리는 생산할 수 있습니다. 나는. 공장 1은 제품 2와 4를 생산할 수 있습니다.

내 SQLITE 데이터베이스에는 idfactory [INT], idproduct [INT], production [BOOL] 필드가 4 개있는 테이블이 있습니다. ]. 그때 관련 데이터 집합을 얻기 위해 다음 코드를 사용하고 있습니다 :

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

내 생각은 다음과 같이 뭔가, 내 사전을 채우기 위해 루프를 사용하는 것 :

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

그러나,이 코드에서 오류가 발생하고 데이터베이스에 고유 키가 없기 때문에 문제가 될 수도 있습니다.

내 설명이 충분한 지 확신 할 수 없지만 도움을 주시면 대단히 감사하겠습니다.

+1

이 될 수 있습니까? (id, []). append (prod)' – mshsayem

+0

그리고'result'가 반복을 시도하기 전에 비어 있지 않은지 확인하십시오! – michaelmeyer

답변

0

setdefault 방법은 dict 일 수 있습니다. 이 시도 :

p = {} 

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

고마워, 그 일을 했어! 나는 setdefault 옵션을 살펴볼 것이다. – user3222343

0

defaultdictsetdefault를 사용하는 것보다 is faster, 내 의견으로는, 동일한 작업을 수행하는 많은 청소기 방법. 알 수없는 키에 대한 모든 조회에 대해 빈 목록을 사용하려는 경우이를 사용하는 것이 좋습니다.

from collections import defaultdict 

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

댓글을 주셔서 감사합니다. 나는 너의 제안을 조사 할 것이다. .setdefault를 통해 defaultdict를 사용할 때 실용적인 의미가 무엇이라고 생각하십니까? – user3222343

관련 문제