如何遍历嵌套循环并枚举

时间:2012-11-20 05:33:21

标签: python list loops if-statement nested-loops

我的嵌套循环出了问题。我得到一个输出,但它重复了我的数据集中的字段数的每个输出。

for dat in data_body:
    x = float(dat[5])
    y = float(dat[6])
    point = ogr.Geometry(ogr.wkbPoint)
    point.AddPoint(x,y)
    feature.SetGeometry(point)
    for i, d in enumerate(dat):
        for j, field in enumerate(new_fields):
            if i == j:
                feature.SetField(field, d)
                layer.CreateFeature(feature)

对于我的数据集,列表data_body列表包含13行数据和55列(即55个位置)。对于我的列表new_fields,我有55个值,它们对应于data_body列表列表。因此,在我的对象feature.SetField(field, d)的代码块中。我应该让data_body的每个值对应于每个唯一字段,只要行彼此匹配,即ij。但是,而是使用与new_fields中的值对应的列值对应的13行数据来获取对象。我得到13 * 55的值,即715行,其中约50%的数据缺少值。我的输出数据表类似于三角形数据。

我不确定我的问题是否有意义,但如果确实如此,那么我对嵌套循环策略的任何帮助都会有所帮助。我认为我的问题是我对循环实际做的概念,以及我的if语句可能正在做什么。

1 个答案:

答案 0 :(得分:2)

正如avasal所说,你想同时迭代dat和new_fields,最简单的方法是使用zip

for d, field in zip(dat, new_fields):
    feature.SetField(field, d)
    layer.CreateFeature(feature)