Django for 循环,带括号用于 zip 命令

问题描述 投票:0回答:1

在 Python 中,这段代码可以工作

mylist1 = ["peru", "germany", "japan"]
mylist2 = [["lima","cusco"], ["berlin","munich"], ["tokyo"]]
mylist3 = [[1,2], [3,4], [5]]

for country, (cities, numbers) in zip(mylist1, zip(mylist2, mylist3)):
    print(country)
    for city, number in zip(cities, numbers):
        print(city)
        print(number)

我能够打印我想要的内容:

peru
lima
1
cusco
2
germany
berlin
3
munich
4
japan
tokyo
5

但是在 Django 中我遇到了括号问题。在views.py中我可以设置

mylist=zip(mylist1, zip(mylist2, mylist3))
,所以我会有


{% for country, (cities, numbers) in mylist %}:
    print(country)
    {% for city, number in zip(cities, numbers) %}:
        print(city)
        print(number)

第一个 for 循环是我陷入困境的地方。我应该做什么来使用(城市,数字)。我认为括号不被接受。

python 方法不起作用

django for-loop zip
1个回答
0
投票

通过在声明 for 循环后立即拆分城市和数字,您实际上只是撤消了之前所做的压缩。如果你想继续你的方法,你应该将压缩的城市和数字放在一起,这样生成的 python 代码如下所示:

mylist1 = ["peru", "germany", "japan"]
mylist2 = [["lima","cusco"], ["berlin","munich"], ["tokyo"]]
mylist3 = [[1,2], [3,4], [5]]

for country, city-numbers in zip(mylist1, zip(mylist2, mylist3)):
    print(country)
    for city, number in city-numbers:
        print(city)
        print(number)

生成的 django html 将是:

{% for country, city-numbers in mylist %}:
    {{ country }}
    {% for city, number in city-numbers %}:
        {{ city }}
        {{ number }}

请注意,我将打印语句转换为双括号,因为这就是模板中输出变量的方式。

© www.soinside.com 2019 - 2024. All rights reserved.