2

この質問が些細なことかどうかはわかりません。しかし、数時間検索した後、私はここでそれを尋ねることに決めました。次のコードを検討してください。

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

1 に答える 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

デフォルトの dict を作成するときは、未定義のキーに値を与えるファクトリ関数を指定するだけで、それ以上は指定しません。

于 2012-02-07T04:09:50.097 に答える