如何获取defaultdict中值的类型

时间:2012-02-07 04:06:31

标签: python types 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

1 个答案:

答案 0 :(得分: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'>

(老实说,为了找到这个,我只是在控制台上制作了一个默认的dd,dd(d),并寻找看起来很有希望的东西。)

顺便说一下,defaultdict只接受默认类型的值是不正确的。例如:

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

当你创建一个默认的dict时,你实际上只是指定了工厂函数,它给出了未定义键的值,仅此而已。