2011-01-18 2 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 question. 유사한 문자열을 그룹화하는 방법?

<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

좋아, 아무것도 쓰지 않을거야 = P – Lacrymology

+0

이것은 효과가있다. 고맙습니다! – user216171