1. ホーム
  2. python

Django テンプレートは defaultdict をループさせることができません。

2023-10-15 22:40:38

質問

import collections

data = [
  {'firstname': 'John', 'lastname': 'Smith'}, 
  {'firstname': 'Samantha', 'lastname': 'Smith'}, 
  {'firstname': 'shawn', 'lastname': 'Spencer'}, 
]

new_data = collections.defaultdict(list)

for d in data:
    new_data[d['lastname']].append(d['firstname'])

print new_data

以下はその出力です。

defaultdict(<type 'list'>, {'Smith': ['John', 'Samantha'], 'Spencer': ['shawn']})

で、これがそのテンプレートです。

{% for lastname, firstname in data.items %}
  <h1> {{ lastname }} </h1>
  <p> {{ firstname|join:", " }} </p>
{% endfor %}

しかし、私のテンプレート内のループは動作しません。何も表示されません。それは私にエラーを与えさえしません。どうしたら直るでしょうか?このように、名字と名前を表示するようになっています。

<h1> Smith </h1>
<p> John, Samantha </p>

<h1> Spencer </h1>
<p> shawn </p>

どのように解決するのですか?

を試してみてください。

dict(new_data)

であり、Python 2では iteritems の代わりに items :)