如何获取defaultdict中值的类型

2 投票
1 回答
1705 浏览
提问于 2025-04-17 12:28

我不知道这个问题是不是很简单。但经过几个小时的搜索,我决定在这里问一下。考虑以下代码:

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 个回答

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,然后在控制台输入dir(d),找一些看起来有用的东西来发现这个的。

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

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

当你创建一个default dict时,其实你只是指定了一个工厂函数,用来给那些未定义的键提供值,仅此而已。

撰写回答