複数の辞書のみを含むモジュールをインポートします。どうすればそれらを繰り返すことができますか?の線に沿った何か
import moduleX as data
for d in data:
do stuff with d
モジュールは反復可能ではないため、これは明らかに機能しません。モジュールからすべてのdictをコレクションとして抽出し、そのコレクションを反復処理する方法はありますか?
私の答え:
import moduleX as data
for k, v in data.__dict__.iteritems():
if isinstance(v, dict) and not k.startswith('_'):
# do something
pass
やってみました:
for k,v in data.__dict__.items():
if isinstance(v,dict) and k not in __builtins__:
pass
私の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"
...
あなたが使用することができます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")