我试图突破for循环,但由于某种原因,以下内容无法正常工作:
for out in dbOutPut:
case_id = out['case_id']
string = out['subject']
vectorspace = create_vector_space_model(case_id, string, tfidf_dict)
vectorspace_list.append(vectorspace)
case_id_list.append(case_id)
print len(case_id_list)
if len(case_id_list) >= kcount:
print "true"
break
它只是继续迭代直到dbOutput
的结尾。我做错了什么?
答案 0 :(得分:6)
我猜测,基于你的previous question,kcount
是一个字符串,而不是一个int。请注意,当您将int与字符串进行比较时(在CPython版本2中)int is always less than the string,因为'int'
按字母顺序排在'str'
之前:
In [12]: 100 >= '2'
Out[12]: False
如果kcount
是一个字符串,那么解决方案是在argparse
参数中添加一个类型:
import argparse
parser=argparse.ArgumentParser()
parser.add_argument('-k', type = int, help = 'number of clusters')
args=parser.parse_args()
print(type(args.k))
print(args.k)
正在运行
% test.py -k 2
产量
<type 'int'>
2
Python3中不会出现这种令人困惑的错误。在那里,比较int
和str
会引发TypeError。
答案 1 :(得分:4)
是否会发生kcount
实际上是一个字符串,而不是整数,因此永远不会变得小于任何整数?
有关详细信息,请参阅python question中的字符串到int比较。