簡體   English   中英

將兩個列表與字典鍵相關

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM