[英]Relating two lists to a dict key
我試圖將兩個列表與同一個字典鍵相關聯; 然后在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>
append
將新元素添加到列表中,因此最終得到一個三級列表( lists
為[[[1, 2, 3, 4], ['A', 'B']]]
而不是[[1, 2, 3, 4], ['A', 'B']]
)
嘗試使用extend
而不是:
lists.extend([ListA,ListB])
(或者,一一追加)
lists.append(ListA)
lists.append(ListB)
我沒有測試它,但是您將列表嵌入了一個級別。
因此,更換
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)。 因此,請確保兩個列表的大小相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.