<p>这里有一个简单的方法。它依赖于sentinel“end”字典的存在,例如<code>{u'end': ('', '')}</code>,这似乎是对所示数据的有效假设。你知道吗</p>
<pre><code>list1 = [{u'model': (u'AAAA', '')},
{u'des': (u'xx', '')},
{u'select': (u'1331', u'1')},
{u'select': (u'1332', u'2')},
{u'derived': (u'3444', u'2')},
{u'derived': (u'3445', u'1')},
{u'end': ('', '')},
{u'model': (u'BBBB', '')},
{u'des': (u'yy', '')},
{u'select': (u'1331', u'1')},
{u'select': (u'1332', u'2')},
{u'derived': (u'3444', u'2')},
{u'derived': (u'3445', u'1')},
{u'end': ('', '')}]
start = 0
newlist1 = []
for i, d in enumerate(list1):
if 'model' in d:
start = i
elif 'end' in d:
newlist1.append(list1[start:i+1])
</code></pre>
<hr/>
<pre><code>>>> from pprint import pprint
>>> pprint(newlist1)
[[{u'model': (u'AAAA', '')},
{u'des': (u'xx', '')},
{u'select': (u'1331', u'1')},
{u'select': (u'1332', u'2')},
{u'derived': (u'3444', u'2')},
{u'derived': (u'3445', u'1')},
{u'end': ('', '')}],
[{u'model': (u'BBBB', '')},
{u'des': (u'yy', '')},
{u'select': (u'1331', u'1')},
{u'select': (u'1332', u'2')},
{u'derived': (u'3444', u'2')},
{u'derived': (u'3445', u'1')},
{u'end': ('', '')}]]
</code></pre>