Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在模块中迭代字典_Python_Iteration - Fatal编程技术网

Python 在模块中迭代字典

Python 在模块中迭代字典,python,iteration,Python,Iteration,我导入了一个只包含几个字典的模块。我如何迭代这些? 类似于 import moduleX as data for d in data: do stuff with d 这显然不起作用,因为模块不可移植。是否有一种方法可以将模块中的所有DICT提取为一个集合,并遍历该集合?您是否尝试过: for k,v in data.__dict__.items(): if isinstance(v,dict) and k not in __builtins__: pass

我导入了一个只包含几个字典的模块。我如何迭代这些? 类似于

import moduleX as data
for d in data:
    do stuff with d
这显然不起作用,因为模块不可移植。是否有一种方法可以将模块中的所有DICT提取为一个集合,并遍历该集合?

您是否尝试过:

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"
... 
我的答覆是:

import moduleX as data

for k, v in data.__dict__.iteritems():
    if isinstance(v, dict) and not k.startswith('_'):
        # do something
        pass
您可以使用
变量(对象)


多谢了,奥兹,这就是我要找的20美分。eval('data.'+项)现在为我提供object@user1734278,我对我的答案进行了一些扩展,因此它更具可读性。@Oz123:
eval('isinstance(data.+item+',dict)
写得更好
isinstance(getattr(data,item,None),dict)
eval
几乎从来都不是正确的答案。@MatthewTrevor,谢谢你的评论,我不知道你能做到。为什么最后需要
None
?如果属性不存在,则返回的默认值为@Oz123:
None
。如果没有它,您将得到一个
属性错误
。也可以工作,但我对输出有点困惑,因为我也得到了一些内置的输出。本来只会得到口授证书的。我可能误解了python在这里所做的事情,或者这个命令似乎有点误导您可以在内置中使用k not来过滤这些。对不起,我忘了提到我正在3.x上运行这个命令。Iteritems()似乎已经从中脱离出来了one@user1734278在Python 3上使用
.items()
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")