2010-04-13 4 views
0

장고 쿼리 세트의 개체 목록이 있습니다.django는 쿼리 목록에서 목록을 만듭니다.

my_list = MyObject.objects.filter(variable=something) 

MyObject에는 연도라는 특정 연도로 설정된 필드가 있습니다. 2005, 2007, 2009

my_list를 가져 와서 해당 연도의 모든 MyObject 값을 보유하는 연도 사전을 만들고 싶습니다. 예 :

my_dict['2005'] = list of objects from my_list which match year = 2005 
my_dict['2006'] = list of objects from my_list which match year = 2006 
my_dict['2007'] = list of objects from my_list which match year = 2007 
my_dict['2008'] = list of objects from my_list which match year = 2008 

누구든지이 작업을 수행하는 가장 좋은 방법을 말해 줄 수 있습니까? 이미 첫 번째 비트가 정렬되어 있습니다 (예 : my_list 가져 오기). 나는 그걸 몇 년으로 나눌 필요가있다. 내가 직접 작성하는 시도하지만 루프에 대한 많은 매우 비효율적되었고, DB는

감사

를 조회

답변

1

(실제로 목록이 아니다 '을 my_list'이 검색어 세트를 호출하지 마십시오하지만, 쿼리 세트. 'my_objects'와 같은 것으로 부릅니다.)

my_dict = {} 
for obj in my_objects: 
    my_dict.setdefault(obj.year, []).append(obj) 
4
import collections 

mydict = collections.defaultdict(list) 

for obj in my_list: 
    mydict[obj.year].append(obj) 
+0

답장을 보내 주셔서 감사합니다. 그러나 내가 mydict = collections.defaultdict (list) 줄을 실행할 때 첫 번째 인수는 호출 가능해야합니다. – John

+0

내 잘못입니다. 목록 위에 변수를 지정했습니다. – John

관련 문제