当我尝试执行以下代码时,我得到“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
感谢。
答案 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'}