2012-02-07 17 views
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となります。あなたはdefault_factory見たい

答えて

4

>>> 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 

デフォルトの辞書を作る

は、あなたが本当に唯一の工場出荷時の未定義のキーの値を与える関数、そして何よりもを指定しています。

+0

ありがとうDSM。それは私の問題を解決する。私の意図は、いくつかのdefaultdictを関数パラメータとして渡し、その関数の中で同じ "type"の新しいdefaultdictを作成することでした。しかし、ここでは "型"についてではなく、同じ 'default_factory'を持つことです。 –

+0

私はすでにチェックしていると思いますが、わかりません。私は**の質問に**はい**をチェックしました**この投稿はあなたに有益でした**? –

関連する問題