반응형
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
반응형
'파이썬' 카테고리의 다른 글
파이썬 목록 항목의 발생 횟수를 어떻게 계산할 수 있습니까? (0) | 2020.12.07 |
---|---|
파이썬 x의 반환 값 = os.system (..) (0) | 2020.12.07 |
파이썬 OpenCV 및 Python을 사용하여 웹캠 피드 표시 (0) | 2020.12.07 |
파이썬 반환을 기다리지 않고 파이썬에서 프로그램을 호출하는 방법 (0) | 2020.12.07 |
파이썬 파일의 마지막 X 줄을 검색하는 가장 효율적인 방법은 무엇입니까? (0) | 2020.12.07 |
댓글