1

当我尝试执行以下代码时,我得到“TypeError:需要可迭代参数” :

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"] 中的 if ":" 行中:

清单内容:

[{'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

谢谢。

4

2 回答 2

2

首先,如果你想遍历你的对象列表的项目,你应该使用 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"]):
于 2012-08-21T08:55:08.977 回答
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'}
于 2012-08-21T09:10:59.560 回答