gpt4 book ai didi

python - 如何在 ZPT 中循环遍历 OrderedDict 的子组?

转载 作者:行者123 更新时间:2023-11-28 22:51:08 25 4
gpt4 key购买 nike

我有一个浏览器 View 方法,它返回一个最多包含 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

我可以轻松地遍历它们,在 ZPT 中生成一个平面 UL > LI 列表:

<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}].

我不想更改浏览器 View ,因为模板的其他部分希望 mydict 的键是大脑。

顺便说一句,如果我有一个列表而不是一个字典,我可以用以下方法重新组合它的元素:

zip(*[mylist[i::3] for i in range(3)])

但这对于口述是不可能的,而且(奇怪的是我)对于 OrderedDicts 也是不可能的。

最佳答案

我认为这才是你真正想要的:

from collections import OrderedDict

mydict = OrderedDict()

for i in xrange(18, 0, -1):
mydict['d{0}'.format(i)] = 'item {0}'.format(i)

regroupped_dict = [OrderedDict(mydict.items()[i: i + 2])
for i in xrange(0, len(mydict), 3)]

print regroupped_dict

# Result: [OrderedDict([('d18', 'item 18'), ('d17', 'item 17')]), OrderedDict([('d15', 'item 15'), ('d14', 'item 14')]), OrderedDict([('d12', 'item 12'), ('d11', 'item 11')]), OrderedDict([('d9', 'item 9'), ('d8', 'item 8')]), OrderedDict([('d6', 'item 6'), ('d5', 'item 5')]), OrderedDict([('d3', 'item 3'), ('d2', 'item 2')])]

关于python - 如何在 ZPT 中循环遍历 OrderedDict 的子组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21991079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com