Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django的for循环中遍历多个列表_Python_Django_Django Templates - Fatal编程技术网

Python 在django的for循环中遍历多个列表

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循环,因为我使用的是自定义过滤器。我不能使用zip,因为如果我的列表中有一个为空,那么zip将返回空列表,所以我想我必须为此使用自定义过滤器

代码:

现在我希望我的自定义过滤器只返回这3个列表中的一个列表

自定义筛选器:

在我的模板中,我使用了以下内容:

1为两个列表工作

{% 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),
}