我试图将两个列表与同一个字典键相关联;然后在 html 表格中显示列表。我不知道我是否选择了错误的方法来存储列表,或者我是否搞乱了显示列表所需的 for 循环的配置。想知道是否有人可以提供帮助。
到目前为止我所拥有的:
我想要关联的内容:KeyA 两个列表:ListA 和 ListB。
存储:
listA = [1,2,3,4]
listB = [A,B]
keys = {}
lists = []
lists.append([ListA,ListB])
keys.setdefault(KeyA, []).append(lists)
显示:
{% for option in keys %}
<tr class = 'collapse level1' data-depth="1" >
<td class ='site_device'> </td>
<td class = 'site_device' > {{option}}</td>
<td class ='site_device'></td>
<td class ='site_device'></td>
{% for list_holder in keys[option] %}
{% for lists in list_holder %}
{% for v1 in lists %}
<tr class = 'collapse level2' data-depth="2" >
<td class ='site_device'></td>
<td class ='site_device'></td>
<td class ='site_device'>{{ v1 }}</td>
<td class ='site_device'></td>
</tr>
{% endfor %}
{% endfor %}
{% endfor %}
</tr>
{% endfor %}
此方法给出:
<tr class = 'collapse level1' data-depth="1" >
<td class ='site_device'> </td>
<td class = 'site_device' > KeyA</td>
<td class ='site_device'></td>
<td class ='site_device'></td>
<tr class = 'collapse level2' data-depth="2" >
<td class ='site_device'></td>
<td class ='site_device'></td>
<td class ='site_device'>[1, 2, 3, 4]</td>
<td class ='site_device'></td>
</tr>
<tr class = 'collapse level2' data-depth="2" >
<td class ='site_device'></td>
<td class ='site_device'></td>
<td class ='site_device'>['A','B']</td>
<td class ='site_device'></td>
</tr>
</tr>
我的目标是:
<tr class = 'collapse level1' data-depth="1" >
<td class ='site_device'> </td>
<td class = 'site_device' > KeyA</td>
<td class ='site_device'></td>
<td class ='site_device'></td>
<tr class = 'collapse level2' data-depth="2" >
<td class ='site_device'></td>
<td class ='site_device'></td>
<td class ='site_device'> 1 </td>
<td class ='site_device'> A </td>
</tr>
<tr class = 'collapse level2' data-depth="2" >
<td class ='site_device'></td>
<td class ='site_device'></td>
<td class ='site_device'> 2 </td>
<td class ='site_device'> B </td>
</tr>
<tr class = 'collapse level2' data-depth="2" >
<td class ='site_device'></td>
<td class ='site_device'></td>
<td class ='site_device'> 3 </td>
<td class ='site_device'></td>
</tr>
<tr class = 'collapse level2' data-depth="2" >
<td class ='site_device'></td>
<td class ='site_device'></td>
<td class ='site_device'> 4 </td>
<td class ='site_device'></td>
</tr>
</tr>
最佳答案
我没有测试它,但你已经将列表嵌入了太深的一层。
所以,替换
lists.append([listA,listB])
由
lists.append(listA)
lists.append(listB)
还有别的东西,为什么用这个?:
keys.setdefault(KeyA, []).append(lists)
而不是
keys.setdefault(KeyA, lists)
# or even
keys['KeyA']=lists
这更具可读性。
对于另一个问题,一种可能性是循环如下:
{% for option in keys %}
<tr class = 'collapse level1' data-depth="1" >
<td class ='site_device'> </td>
<td class = 'site_device' > {{option}}</td>
<td class ='site_device'></td>
<td class ='site_device'></td>
{% for list_holder in keys[option] %}
{% for i in range(list_holder[0]|length) %}
<tr class = 'collapse level2' data-depth="2" >
<td class ='site_device'></td>
<td class ='site_device'></td>
<td class ='site_device'>{{ list_holder[0][i] }}</td>
<td class ='site_device'>{{ list_holder[1][i] }}</td>
</tr>
{% endfor %}
{% endfor %}
{% endfor %}
当然,由于两个列表的大小不同,因此会引发 IndexError(s)。因此,请确保两个列表具有相同的大小。
关于python - 将两个列表与字典键关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57604572/