1

複数の辞書のみを含むモジュールをインポートします。どうすればそれらを繰り返すことができますか?の線に沿った何か

import moduleX as data
for d in data:
    do stuff with d

モジュールは反復可能ではないため、これは明らかに機能しません。モジュールからすべてのdictをコレクションとして抽出し、そのコレクションを反復処理する方法はありますか?

4

4 に答える 4

3

私の答え:

import moduleX as data

for k, v in data.__dict__.iteritems():
    if isinstance(v, dict) and not k.startswith('_'):
        # do something
        pass
于 2012-10-10T09:29:13.180 に答える
0

やってみました:

for k,v in data.__dict__.items():
    if isinstance(v,dict) and k not in __builtins__:
        pass
于 2012-10-10T09:23:12.657 に答える
0

私の2セントの解決策:

>>> for item in dir(data):
...     print item
...     if eval('type(t.'+item+')') is dict: print item, "is a dict"
... 

以上:

>>> for item in dir(data):
...     if eval('isinstance(data.'+item+', dict)') and not item.startswith('_'): 
            print item , "is a dict"
... 
于 2012-10-10T09:24:40.240 に答える
0

あなたが使用することができますvars(object)

import the_module_with_dictionaries as my_mod

#Get just names of defined dictionaries
for case in vars(my_mod):
    print(case)

#Get the values in those dictionaries
for case in vars(my_mod).values():
    print(case)

    if isinstance(case, dict):
        print("Yay found a dict")
于 2017-01-24T02:31:20.967 に答える