사전에서 defaultdict를 구성하는 방법은 무엇입니까?


84

나는이 있으면 d=dict(zip(range(1,10),range(50,61)))내가 만들 수있는 방법 collections.defaultdict의 아웃 dict?

유일한 인수 defaultdict는 공장 기능입니다. 초기화 한 다음 원본을 검토 d하고 업데이트해야 defaultdict합니까?

답변:


96

문서 읽기 :

첫 번째 인수는 default_factory 속성에 대한 초기 값을 제공합니다. 기본값은 없음입니다. 나머지 모든 인수는 키워드 인수를 포함 하여 dict 생성자에 전달 된 것처럼 동일하게 처리 됩니다.

from collections import defaultdict
d=defaultdict(int, zip(range(1,10),range(50,61)))

또는 주어진 사전 d:

from collections import defaultdict
d=dict(zip(range(1,10),range(50,61)))
my_default_dict = defaultdict(int,d)

3
중첩 된 사전에 대해이 접근 방식을 확장 할 수 있습니까? 다음은 의도 한대로 작동하지 않습니다. default_dict = defaultdict(None,{"a":1,"b":{"c":3}})예를 들어 default_dict["e"]None을 반환하는 대신 KeyError를 발생
시킵니다

4
@alancalvitti는 전달 None한다고해서 알 수없는 키에 대해 None이 생성된다는 의미가 아니기 때문에 전혀 사용하지 않기 때문입니다. 해야 할 일defaultdict(lambda: None, {....})
Eric Darchis

1

dict를 두 번째 인수로 전달하여 dict에서 defaultdict를 구성 할 수 있습니다.

from collections import defaultdict

d1 = {'foo': 17}
d2 = defaultdict(int, d1)

print(d2['foo'])  ## should print 17
print(d2['bar'])  ## should print 1 (default int val )

0

defaultdict 요소가 없을 때 키 오류를 반환하지 않는 컬렉션의 메서드입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.