반응형
defaultdict를 defaultdict의 기본값으로 만드는 방법이 있습니까? (즉, 무한 레벨 재귀 defaultdict?)
나는 할 수 있기를 원한다 :
x = defaultdict(...stuff...)
x[0][1][0]
{}
따라서 x = defaultdict (defaultdict)
를 수행 할 수 있지만 이는 두 번째 수준 일뿐입니다.
x[0]
{}
x[0][0]
KeyError: 0
이것을 할 수있는 레시피가 있습니다. 그러나 단순히 일반적인 defaultdict 인수를 사용하여 수행 할 수 있습니까?
아마도 bunch 패턴을 사용하게 될 것입니다.하지만이 방법을 모른다는 것을 깨달았을 때 관심을 갖게되었습니다.
해결 방법
임의 수의 레벨 :
def rec_dd():
return defaultdict(rec_dd)
>>> x = rec_dd()
>>> x['a']['b']['c']['d']
defaultdict(<function rec_dd at 0x7f0dcef81500>, {})
>>> print json.dumps(x)
{"a": {"b": {"c": {"d": {}}}}}
물론 람다를 사용하여이 작업을 수행 할 수도 있지만 람다가 읽기 어려운 것으로 나타났습니다. 어쨌든 다음과 같이 보일 것입니다.
rec_dd = lambda: defaultdict(rec_dd)
참조 페이지 https://stackoverflow.com/questions/19189274
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python에서 OpenCV를 사용하여 이미지 분할 (0) | 2021.01.05 |
---|---|
파이썬에서 "필터"객체의 길이를 찾는 방법 (0) | 2021.01.05 |
파이썬 12 시간을 24 시간 시간으로 변환 (0) | 2021.01.05 |
파이썬 in python, get the output of system command as a string (0) | 2021.01.04 |
파이썬 BeautifulSoup Grab Visible 웹 페이지 텍스트 (0) | 2021.01.04 |
댓글