Python 在django的for循环中遍历多个列表
我有三个列表,我只想为这些列表使用一个for循环,因为我使用的是自定义过滤器。我不能使用zip,因为如果我的列表中有一个为空,那么zip将返回空列表,所以我想我必须为此使用自定义过滤器 代码: 现在我希望我的自定义过滤器只返回这3个列表中的一个列表 自定义筛选器: 在我的模板中,我使用了以下内容: 1为两个列表工作Python 在django的for循环中遍历多个列表,python,django,django-templates,Python,Django,Django Templates,我有三个列表,我只想为这些列表使用一个for循环,因为我使用的是自定义过滤器。我不能使用zip,因为如果我的列表中有一个为空,那么zip将返回空列表,所以我想我必须为此使用自定义过滤器 代码: 现在我希望我的自定义过滤器只返回这3个列表中的一个列表 自定义筛选器: 在我的模板中,我使用了以下内容: 1为两个列表工作 {% for x in a|zip:b %} {% endfor %} 2不适用于三个列表: {% for x in a|zip:b|zip:c %} {% endfor
{% for x in a|zip:b %}
{% endfor %}
2不适用于三个列表:
{% for x in a|zip:b|zip:c %}
{% endfor %}
3如果制作两个过滤器zip1和zip2并使用此过滤器,则其也不起作用:
{% for x in a|zip1:b|zip2:c %}
{% endfor %}
4我还尝试在一个过滤器中发送到列表,以便我可以在那里拆分它们并执行我的工作,但这给了我一个错误,即只能将列表而不是安全文本连接到列表
任何帮助都将不胜感激
a = []
b = [{"qq":1},{"ww":2},{"ee":3}]
c = [{"rr":4}]
m = max(len(a), len(b), len(c))
a = (a + [{}]*m)[:m]
b = (b + [{}]*m)[:m]
c = (c + [{}]*m)[:m]
for x, y, z in zip(a, b, c):
#do something fancy
或作为上下文变量传递
context = {
zipped_list: zip(a, b, c),
}
您是否使用内置的添加筛选器尝试过此操作?它可以处理将两个列表添加到一起的问题——但是您的自定义zip筛选器使用的行为在我看来是相同的,我不知道为什么这样做不起作用。尝试{a| add:b | add:c%}中的x的%-查看添加两个列表的示例。实际上问题是在我的第三个数组中,第二个过滤器不起作用,但是当你建议我使用add时,我发现了这一点。谢谢
{% for x in a|zip1:'b,c' %}
{% endfor %}
a = []
b = [{"qq":1},{"ww":2},{"ee":3}]
c = [{"rr":4}]
m = max(len(a), len(b), len(c))
a = (a + [{}]*m)[:m]
b = (b + [{}]*m)[:m]
c = (c + [{}]*m)[:m]
for x, y, z in zip(a, b, c):
#do something fancy
context = {
zipped_list: zip(a, b, c),
}