私は、次のようなものから発生した、最大 18 個の頭脳を含む 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}
例: thisを thisに変換したいと思い[{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)])
しかし、それはdictsでは不可能であり、(奇妙なことにimo)OrderedDictsでも不可能です。