본문 바로가기
파이썬

파이썬 Python에서 여러 수준의 'collection.defaultdict'

by º기록 2020. 12. 7.
반응형

SO의 훌륭한 사람들 덕분에, 특히 가독성과 속도면에서 collections.defaultdict 가 제공하는 가능성을 발견했습니다. 나는 그것들을 성공적으로 사용했습니다.

이제 세 가지 수준의 사전을 구현하려고합니다. 두 개의 최상위 사전은 defaultdict 이고 가장 낮은 사전은 int 입니다. 이 작업을 수행하는 적절한 방법을 찾지 못했습니다. 내 시도는 다음과 같습니다.

from collections import defaultdict
d = defaultdict(defaultdict)
a = [("key1", {"a1":22, "a2":33}),
     ("key2", {"a1":32, "a2":55}),
     ("key3", {"a1":43, "a2":44})]
for i in a:
    d[i[0]] = i[1]

이제 작동하지만 원하는 동작 인 다음은 작동하지 않습니다.

d["key4"]["a1"] + 1

두 번째 수준 defaultdict int 유형이라고 어딘가에 선언 했어야한다고 생각하지만 어디서 어떻게해야하는지 찾지 못했습니다.

처음에 defaultdict 를 사용하는 이유는 각각의 새 키에 대해 사전을 초기화 할 필요가 없기 때문입니다.

더 우아한 제안이 있습니까?

감사합니다.

 

해결 방법

 

사용하다:

from collections import defaultdict
d = defaultdict(lambda: defaultdict(int))

그러면 d 에서 새 키에 액세스 할 때마다 새 defaultdict (int) 가 생성됩니다.

 

참조 페이지 https://stackoverflow.com/questions/2600790

 

 

반응형

댓글