2
我有返回包含至多18周的大腦的OrderedDict,發起的類似的東西,以這個瀏覽器視圖的方法:我如何循環ZPT中OrderedDict的子組?
mydict = OrderedDict()
for b in brains:
video_obj = b.getObject()
mydict[b] = {'video_id': video_obj.url,
'thumb': video_obj.tag(scale='thumb')}
return mydict
我可以通過他們容易地循環產生一個平坦UL > LI
列表中ZPT:
<ul>
<li tal:repeat="brain mydict">
<a tal:attributes="href python:mydict[brain]['video_id']">
<img tal:replace="mydict[brain]['thumb']" />
</a>
</li>
</ul>
但我要的是一個批處理狀結構:
<ul>
<li>
<a>Item 1</a>
<a>Item 2</a>
<a>Item 3</a>
</li>
...
<li>
<a>Item 16</a>
<a>Item 17</a>
<a>Item 18</a>
</li>
</ul>
如:我想改變這個{1:2, 2:4, 3:6, 4:8, 5:10, 6:12, 7:14, 8:16, 9:18}
分成這個[{1:2, 2:4, 3:6}, {4:8, 5:10, 6:12}, {7:14, 8:16, 9:18}]
。
我不想更改瀏覽器視圖,因爲模板的其他部分需要mydict的鍵才能成爲大腦。
順便說一句,如果我有一個列表,而不是一個字典的,我可以重組它的元素搭配:
zip(*[mylist[i::3] for i in range(3)])
但是,這不可能類型的字典和(奇怪的是IMO)不OrderedDicts無論是。
你的意思是你想批量通過3S的項目給他們組? –
@ martijn-pieters是的,我想批量他們。此外,我更新了我的問題中的第一個片段,以反映OrderedDict的有效用法。 –
您是否嘗試過拉鍊(* [mydict.values()[i :: 3],我在範圍內(3)]) – avoinea