2011-01-18 12 views
1
for i in names: 
    dict[i] = {'firstname': name[i]['firstname'], 
       'lastname': name[i]['lastname']} 
    print dict[0]['firstname'] # John 
    print dict[0]['lastname'] # Doe 

    # group similar lastnames, along with their firstnames 
    # ... 
return render_to_response('index.html', dict) 

同様の姓で終わる名前をグループ化する必要があります。 たとえば、出力は次のようになります。Python dict質問です。類似の文字列をグループ化するには?

<html> 
    <body> 
    <h1> Doe </h1> 
    <p> John, Jason, Peter </p> 

    <h1> Avery </h1> 
    <p> Kelly, Brittany </p> 
    </body> 
</html> 

「H1」のタグが最後の名前が含まれていることになってと「p」は最初の名前をタグです。

どうすればよいですか?

+1

"類似して"あなたは実際に "等しい"を意味しますか? –

+0

はい、それは私が意味するものです。 – user216171

答えて

6

あなたはこのようなものを意味する:

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> 
+1

OK、何も書かない= P – Lacrymology

+0

これはうまくいった。ありがとうございました! – user216171

関連する問題