在Python中对列表进行分组,但保持它们的顺序

在Python中对列表进行分组,但保持它们的顺序,python,Python,假设我有以下清单: list1 = [{'position':'child','title':'dave','obj':obj,created:'2013-11-20'}, {'position':'child','title':'james','obj':obj,created:'2013-11-19'}, {'position':'child','title':'james','obj':obj,created:'2013-11-18'},

假设我有以下清单:

list1 = [{'position':'child','title':'dave','obj':obj,created:'2013-11-20'},
         {'position':'child','title':'james','obj':obj,created:'2013-11-19'},
         {'position':'child','title':'james','obj':obj,created:'2013-11-18'},
         {'position':'child','title':'ian','obj':obj,created:'2013-11-17'},
         {'position':'child','title':'dave','obj':obj,created:'2013-11-16'},
         {'position':'child','title':'dave','obj':obj,created:'2013-11-15'},
         {'position':'child','title':'dave','obj':obj,created:'2013-11-14'}]
正如您所看到的,它已经按日期顺序排列(我希望保持这种方式)。关于如何使用
defaultdict
按常用条目分组,关于stackoverflow有很多答案,但是有没有一种方法可以按
title
分组,同时保留
创建的
顺序,如下所示:

list1 = [{'position':'parent','title':'dave root'},
         {'position':'child','title':'dave','obj':obj,created:'2013-11-20'},
         {'position':'parent','title':'james root'},
         {'position':'child','title':'james','obj':obj,created:'2013-11-19'},
         {'position':'child','title':'james','obj':obj,created:'2013-11-18'},
         {'position':'parent','title':'ian root'},
         {'position':'child','title':'ian','obj':obj,created:'2013-11-17'},
         {'position':'parent','title':'dave root'},
         {'position':'child','title':'dave','obj':obj,created:'2013-11-16'},
         {'position':'child','title':'dave','obj':obj,created:'2013-11-15'},
         {'position':'child','title':'dave','obj':obj,created:'2013-11-14'}]
使用:

输出:

{'position': 'parent', 'title': 'dave root'}
{'position': 'child', 'created': '2013-11-20', 'obj': 'obj', 'title': 'dave'}
{'position': 'parent', 'title': 'james root'}
{'position': 'child', 'created': '2013-11-19', 'obj': 'obj', 'title': 'james'}
{'position': 'child', 'created': '2013-11-18', 'obj': 'obj', 'title': 'james'}
{'position': 'parent', 'title': 'ian root'}
{'position': 'child', 'created': '2013-11-17', 'obj': 'obj', 'title': 'ian'}
{'position': 'parent', 'title': 'dave root'}
{'position': 'child', 'created': '2013-11-16', 'obj': 'obj', 'title': 'dave'}
{'position': 'child', 'created': '2013-11-15', 'obj': 'obj', 'title': 'dave'}
{'position': 'child', 'created': '2013-11-14', 'obj': 'obj', 'title': 'dave'}
使用:

输出:

{'position': 'parent', 'title': 'dave root'}
{'position': 'child', 'created': '2013-11-20', 'obj': 'obj', 'title': 'dave'}
{'position': 'parent', 'title': 'james root'}
{'position': 'child', 'created': '2013-11-19', 'obj': 'obj', 'title': 'james'}
{'position': 'child', 'created': '2013-11-18', 'obj': 'obj', 'title': 'james'}
{'position': 'parent', 'title': 'ian root'}
{'position': 'child', 'created': '2013-11-17', 'obj': 'obj', 'title': 'ian'}
{'position': 'parent', 'title': 'dave root'}
{'position': 'child', 'created': '2013-11-16', 'obj': 'obj', 'title': 'dave'}
{'position': 'child', 'created': '2013-11-15', 'obj': 'obj', 'title': 'dave'}
{'position': 'child', 'created': '2013-11-14', 'obj': 'obj', 'title': 'dave'}
使用:

输出:

{'position': 'parent', 'title': 'dave root'}
{'position': 'child', 'created': '2013-11-20', 'obj': 'obj', 'title': 'dave'}
{'position': 'parent', 'title': 'james root'}
{'position': 'child', 'created': '2013-11-19', 'obj': 'obj', 'title': 'james'}
{'position': 'child', 'created': '2013-11-18', 'obj': 'obj', 'title': 'james'}
{'position': 'parent', 'title': 'ian root'}
{'position': 'child', 'created': '2013-11-17', 'obj': 'obj', 'title': 'ian'}
{'position': 'parent', 'title': 'dave root'}
{'position': 'child', 'created': '2013-11-16', 'obj': 'obj', 'title': 'dave'}
{'position': 'child', 'created': '2013-11-15', 'obj': 'obj', 'title': 'dave'}
{'position': 'child', 'created': '2013-11-14', 'obj': 'obj', 'title': 'dave'}
使用:

输出:

{'position': 'parent', 'title': 'dave root'}
{'position': 'child', 'created': '2013-11-20', 'obj': 'obj', 'title': 'dave'}
{'position': 'parent', 'title': 'james root'}
{'position': 'child', 'created': '2013-11-19', 'obj': 'obj', 'title': 'james'}
{'position': 'child', 'created': '2013-11-18', 'obj': 'obj', 'title': 'james'}
{'position': 'parent', 'title': 'ian root'}
{'position': 'child', 'created': '2013-11-17', 'obj': 'obj', 'title': 'ian'}
{'position': 'parent', 'title': 'dave root'}
{'position': 'child', 'created': '2013-11-16', 'obj': 'obj', 'title': 'dave'}
{'position': 'child', 'created': '2013-11-15', 'obj': 'obj', 'title': 'dave'}
{'position': 'child', 'created': '2013-11-14', 'obj': 'obj', 'title': 'dave'}

你能为我解释一下itertools.groupby(list1,key=operator.itemgetter('title'))中的key、grp的
和[…]+list(grp)
中的x的
吗。还有
x
在做什么?为什么会有它?@Sevenearths,
operator.itemgetter('title')
就像
lambda x:x['title']
。参见@Sevenearths,
x
是[…]+列表(grp)的元素。请参见。您能为我解释一下itertools.groupby(list1,key=operator.itemgetter('title'))中的key、grp的
和[…]+list(grp)中x的
吗。还有
x
在做什么?为什么会有它?@Sevenearths,
operator.itemgetter('title')
就像
lambda x:x['title']
。参见@Sevenearths,
x
是[…]+列表(grp)的元素。请参见。您能为我解释一下itertools.groupby(list1,key=operator.itemgetter('title'))中的key、grp的
和[…]+list(grp)中x的
吗。还有
x
在做什么?为什么会有它?@Sevenearths,
operator.itemgetter('title')
就像
lambda x:x['title']
。参见@Sevenearths,
x
是[…]+列表(grp)的元素。请参见。您能为我解释一下itertools.groupby(list1,key=operator.itemgetter('title'))中的key、grp的
和[…]+list(grp)中x的
吗。还有
x
在做什么?为什么会有它?@Sevenearths,
operator.itemgetter('title')
就像
lambda x:x['title']
。参见@Sevenearths,
x
是[…]+列表(grp)的元素。看见