2012-02-16 1 views
4

이 내가 이런 식으로 뭔가를 구현했습니다 두 번째 시간입니다 나는 더 나은 (읽기 : 더 파이썬을)이 있어야한다 의심이 작업을 수행하는 방법 :새 목록을 추가하거나 사전에 목록 (있는 경우)에 추가하기위한 훌륭한 숙어가 있습니까?

phone_book = {} 

def add_number(name,number): 
    if name in phone_book: 
    phone_book['name'].append(number) 
    else: 
    phone_book['name'] = [number] 

나는 코드가 가능성이있을 수 있습니다 실현 조건부 과제와 더 간결하게 만들었지 만,이 문제를 해결할 더 좋은 방법이있을 것으로 생각됩니다. 코드를 더 짧게 만드는 것에는 관심이 없습니다.

답변

7

사용 dictsetdefault이 같은 :

phone_book.setdefault('name', []).append(number) 
8

그래, defaultdict을 사용할 수 있습니다. 이 dict 하위 클래스를 사용하면 사전에 요소에 액세스 할 때 값이없는 경우 자동으로 지정한 생성자 함수를 사용하여 값을 만듭니다.

from collections import defaultdict 
phone_book = defaultdict(list) 

def add_number(name, number): 
    phone_book[name].append(number)