2012-02-07 2 views
2

이 질문이 사소한 것인지 잘 모릅니다. 그러나 2 시간의 검색 후 나는 여기에서 그것을 묻기로 결정했다. 다음 코드를 고려하십시오defaultdict에서 값 유형을 얻는 방법

from collections import defaultdict 

d = defaultdict(int) 

는 지금까지 내가 아는 한, d는 유일한 유형 int의 값을 받아들입니다. 이제 d에있는 값 유형과 동일한 유형의 다른 변수를 만들고 싶다면 어떻게해야합니까? 그건 내 질문을 이해하는 데 도움이 될 수 있습니다 불가능한 코드 만이 하나입니다

from collections import defaultdict 

d = defaultdict(int)  

a = 1 
if type(a) == d.type_of_values: 
    print "same type" 
else: 
    print "different type" 

그것은 "동일한 유형"을 인쇄해야합니다, 나는 반원 type_of_values의 존재를 발명하고 있습니다 만,이 경우 그 값이해야 int이되어야합니다.

답변

4

당신은 default_factory보고 싶을 :

>>> from collections import defaultdict 
>>> d = defaultdict(int) 
>>> d 
defaultdict(<type 'int'>, {}) 
>>> d.default_factory 
<type 'int'> 
>>> d = defaultdict(list) 
>>> d.default_factory 
<type 'list'> 

(이것을 알아, 솔직히 말해서, 나는 단순히 defaultdict를 만든 콘솔에서) D (DIR를 입력하고, 유망한 듯 뭔가를 보았다)

덧붙여 말하자면 defaultdict는 기본 유형의 값만 허용한다는 것은 사실이 아닙니다. 예를 들어 :

>>> d = defaultdict(int) 
>>> d[10] = 3+4j 
>>> d 
defaultdict(<type 'int'>, {10: (3+4j)}) 
>>> d[30] 
0 
>>> d["fred"] 
0 

당신이 기본 DICT을

, 당신은 정말로 유일한 공장 정의되지 않은 키에 대한 값을 제공 기능, 아무것도 더를 지정하고 있습니다.

+0

감사합니다. DSM. 그게 내 문제를 해결해 줬어. 나의 의도는 함수 매개 변수로 일부 defaultdict를 전달한 다음 그 함수 내에서 동일한 "유형"의 새로운 defaultdict를 작성하는 것이 었습니다. 그러나 여기에서는 "type"에 관한 것이 아니라, 단지 'default_factory'와 같은 것입니다. –

+0

나는 이미 확인한 것으로 생각하지만 확실하지 않습니다. ** ** ** ** **이 게시물은 귀하에게 유용 했습니까 **라는 질문을 확인했습니다. –