簡體   English   中英

創建列表的python字典

[英]Create a python dictionary of lists

我是python和django的新手,想知道如何制作列表字典。

我的四個清單是:

ap = request.POST.getlist('amount_paid[]')
pd = request.POST.getlist('paid_date[]')
method = request.POST.getlist('method[]')
comments = request.POST.getlist('comments[]')

我怎么能把它變成一個字典,然后我可以在django模板中循環,如;

{% for i in the_dict %}
{{i.amount_paid}}
{% endfor %}

提前致謝!

更新:

嗯,我不確定我是否正確張貼了我的問題。 在php中,我可以在一組字段上執行以下操作:

for($i=0;$i<count($_POST['amount_paid']);$i++) {
echo $_POST['amount_paid'][$i];
echo $_POST['paid_date'][$i];
}

所有的表單字段都是輸入文本字段。在Django中,我該怎么做?

您可以創建:

the_dict = dict(amount_paid=ap, paid_date=pd, method=method, comments=comments)

你的模板代碼也沒有意義。 您正在遍歷dict的鍵,而不是在主體中使用它們。

編輯

{% for key in the_dict %}
    {% for val in the_dict[key] %}
        <input name="{{key}}" value="{{val}}"/>
    {% endfor %}
{% endfor %}

Python的dict語法非常簡單。 它只是一對花括號內的鍵值對,如下所示:

the_dict = {
    'amount_paid': request.POST.getlist('amount_paid[]'),
    'paid_date': request.POST.getlist('paid_date[]'),
    'method': request.POST.getlist('method[]'),
    'comments': request.POST.getlist('comments[]'),
}

在您更新之后,看起來您根本不想要一個dict而是zip()

post = request.POST
lists = zip(post.getlist('amount_paid[]'), 
        post.getlist('paid_date[]'),
        post.getlist('method[]'),
        post.getlist('comments[]'),
        )
for amount_paid, paid_date, method, comments in lists:
    print amount_paid
    print paid_date
    # et cetera...

正如經常發生的那樣,你並沒有真正詢問你實際需要解決的問題:你已經以某種(錯誤的)方式做事,並且詢問如何擺脫你自己陷入的問題。

如果我理解正確,你有一組字段 - amount_paid,paid_date,method,comments - 並且每個字段在表單上多次出現,因此每個條目都有一組值。 您可能正在嘗試將它們分類為每一行的字典列表。

嗯,這不是在Django中進行處理的正確方法。 您應該使用formsets ,它為表中的每一行提供一個表單 - 即,您要實現的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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