Python:同时迭代dict和list

时间:2015-02-22 03:58:10

标签: python list dictionary

我想编写一个可以以相同方式迭代dictlist的函数,如下面的代码所示。但是,它不起作用,并指责iter不是迭代器。

def constructResult(*args):
    header = ''
    result = ''
    for arg in args :
        if isinstance(arg, dict) :
            iter = arg.items; #arg is a dict
        else:
            iter = arg #arg is a list 
        for (key,value) in iter :
            header = header + key + ","

注意:此功能的输入为dictlist。这是一个假设。

这是错误消息:

 File "./write-hole-collector.py", line 595, in constructResult
   for (key,value) in iter :
 TypeError: 'builtin_function_or_method' object is not iterable

2 个答案:

答案 0 :(得分:6)

您需要调用 dict.items()方法:

iter = arg.items()  #arg is a dict

否则你确实会得到一个例外,告诉你方法本身是不可迭代的:

>>> d = {}
>>> for key, value in d.items:  # not called
...     pass
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'builtin_function_or_method' object is not iterable

那是因为没有调用方法,你试图迭代方法对象,它不支持该操作。

答案 1 :(得分:0)

for key in z.keys(): print(key)

在函数上迭代的变量。代替键尝试使用keys()