Python - TypeError:需要可迭代的参数

时间:2012-08-21 08:49:37

标签: python list typeerror iterable

当我尝试执行以下代码时,我得到“TypeError:iterable argument required”

for i in range(len(SE_FE_Lists)):                    
    print "** ", SE_FE_Lists[i]["List_contents"]
    if ":" in SE_FE_Lists[i]["List_contents"]:
        print ": ", SE_FE_Lists[i]
        print "*--* ", SE_FE_Lists[i]["List_contents"]
    if " " in SE_FE_Lists[i]["List_contents"]:
        print "Space :", SE_FE_Lists[i]
        print "*--* ", SE_FE_Lists[i]["List_contents"]    

错误位于List [i] [“List_contents”]中的如果“:”行

列表内容:

[{'List_selection': 'List1', 'List_contents': '1:4'}, {'List_selection': 'List2', 'List_contents': '1 2 4'}, {'List_selection': 'List3',
 'List_contents': 1}]

作为输出我得到:

**  1:4

:  {'List_selection': 'List1', 'List_contents': '1:4'}

*--*  1:4

**  1 2 4

Space : {'List_selection': 'List2', 'List_contents': '1 2 4'}

*--*  1 2 4

**  1

感谢。

2 个答案:

答案 0 :(得分:2)

首先,如果你想迭代你的对象List的项目,你应该使用pythonic的方式:

for item in List:

    if ":" in item["List_contents"]:
        print "*--* ", item["List_contents"]
    if " " in item["List_contents"]:
        print "*--* ", item["List_contents"]  

对于您遇到的错误,您的List对象看起来不是一个字典列表。

编辑:

在您的编辑之后,问题是由于List的最后一项:{'List_selection': 'List3', 'List_contents': 1},这里成员'List_contents'是一个整数,而python在整数中找不到“:”... 如果您无法修改列表的内容,请尝试强制python使用str()方法的字符串:

if ":" in str(item["List_contents"]):

答案 1 :(得分:1)

问题是你的字典中有一个整数,而不是一个可迭代的:

{'List_selection': 'List3', 'List_contents': 1}

这一行:

if ":" in SE_FE_Lists[i]["List_contents"]:

在整数1中寻找“:”。 in运算符需要一个可迭代的,而不是整数,所以这显然是错误。如果列表内容看起来像这样,它应该工作:

{'List_selection': 'List3', 'List_contents': '4 5 6'}