TypeError:' int' object在python中不可迭代

时间:2015-02-11 08:56:41

标签: python mysql

def export_csv_standard_units(name):
    cursor.execute("select distinct(standard_units) from activities where standard_type='IC50' ")
    result_standard_units_distinct = cursor.fetchall()

    cursor.execute("select standard_units from activities where standard_type='IC50' ")
    result_standard_units = cursor.fetchall()

    field_standard_units = ()
    cnt = []

    for result in result_standard_units_distinct:
        field_standard_units = field_standard_units + (result_standard_units_distinct,)

    length = int(len(field_standard_units))

    for i in result_standard_units:
        for j in length:
            if field_standard_units(j) == result_standard_units(9):
                cnt[j] = cnt[j] + 1
    field = (field_standard_units, cnt)

    export_field = open('%s_standard_units.csv' %name, 'wb')
    export_csv_field = csv.writer(export_field)
    export_csv_field.writerows([field])

    export_field.close()

运行我的python文件时遇到一些问题。 我想制作用于数据计数的csv.file 喜欢这个..

standard_units计数 standard_unit1 123 standard_unit2 234

但是,它有这样的错误。

   File "manage.py", line 42
     for j in length:
   TypeError: 'int' object is not iterable

这是什么意思可迭代?

1 个答案:

答案 0 :(得分:2)

就像您的错误消息所说:int s不可迭代。使用range

for j in range(length):
    ...

如果length为10,range(length)将为您提供值0..9。

您不必提前实际计算长度 - 而是可以enumerate field_standard_units

for j, unit in enumerate(field_standard_units):
    if unit == result_standard_units(9):  # What's 9?
        ...

注意: 如果您的范围非常大,请使用xrange,因为range会创建一个列表,因此其所有成员都会占用内存,而xrange会创建一个与enumerate类似的生成器。 / p>