나는 당신이 defaultdict
여기에 전혀 필요하지 않다고 생각합니다 . 왜 그냥 dict.setdefault
방법을 사용하지 않습니까?
>>> d = {}
>>> d.setdefault('p', C('p')).v
'p'
물론 많은 인스턴스가 생성 C
됩니다. 문제인 경우 더 간단한 접근 방식이 효과가 있다고 생각합니다.
>>> d = {}
>>> if 'e' not in d: d['e'] = C('e')
defaultdict
내가 볼 수있는 한 다른 대안 보다 빠를 것 입니다.
in
테스트 속도 와 try-except 절 사용 에 관한 ETA :
>>> def g():
d = {}
if 'a' in d:
return d['a']
>>> timeit.timeit(g)
0.19638929363557622
>>> def f():
d = {}
try:
return d['a']
except KeyError:
return
>>> timeit.timeit(f)
0.6167065411074759
>>> def k():
d = {'a': 2}
if 'a' in d:
return d['a']
>>> timeit.timeit(k)
0.30074866358404506
>>> def p():
d = {'a': 2}
try:
return d['a']
except KeyError:
return
>>> timeit.timeit(p)
0.28588609450770264