더북(TheBook)

여기서 새로운 리스트 t도 사전에 추가되었다. 따라서 t를 수정하면 d에도 변경이 반영된다.

>>> t.append('new value')

>>> d

defaultdict(<class 'list'>, {'new key': ['new value']})

리스트의 사전을 만들어야 한다면 defaultdict를 사용해 코드를 더 간단하게 작성할 수 있다. 웹 사이트(http://thinkpython2.com/code/anagram_sets.py)에서 받을 수 있는 연습문제 12-2의 해법에서 문자들로 정렬된 문자열을 이들 문자로 만들 수 있는 단어 목록에 매핑한 사전을 만들었다. 예를 들어 'opst'는 리스트 ['opts', 'post', 'pots', 'spot', 'stop', 'tops']에 매핑된다.

다음은 원래 코드다.

def all_anagrams(filename):

d = {}

for line in open(filename):

word = line.strip().lower()

t = signature(word)

if t not in d:

d[t] = [word]

else:

d[t].append(word)

return d

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.