Python:同时迭代字典和列表

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

最佳答案

您需要调用 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

那是因为通过不调用该方法,您正在尝试迭代不支持该操作的方法对象。

关于Python:同时迭代字典和列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28654360/

相关文章:

python - 从python中的字典列表中删除字典

java - 检查 HashMap 是否被修改(添加或修改值)

python - 为什么 python list L += x 的行为与 L = L + x 不同?

list - 具有任意数量生成器的 Haskell 列表理解

python - 如何通过消除成对的连续互补方向来从给定方向列表返回简化的方向列表?

python - 用 pickle 加密

Java:按分数对 ID 进行排序

python - 使用 Iris 数据集在 Python 中重现 LASSO/Logistic 回归结果

python - 如何在没有 sudo 的情况下在 travis 中安装 python 包?

python - 与列表理解相比,生成器表达式做的工作更少吗?