我有一个来自django查询集的对象列表,例如
my_list = MyObject.objects.filter(variable=something)
MyObject有一个名为year的字段,设置为特定年份,例如2005年,2007年,2009年
我想获取my_list并创建一个包含该年度所有MyObject值的年份字典。 e.g。
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。我只需要分解成几年。我曾尝试自己编写它,但是对于很多for循环和数据库查询来说它变得非常低效
由于
答案 0 :(得分:4)
import collections
mydict = collections.defaultdict(list)
for obj in my_list:
mydict[obj.year].append(obj)
答案 1 :(得分:1)
(不要调用查询集'my_list',它实际上不是列表而是查询集。称之为'my_objects'。)
my_dict = {}
for obj in my_objects:
my_dict.setdefault(obj.year, []).append(obj)