我的嵌套循环有问题。我得到了一个输出,但它复制了数据集中字段数量的每个输出。
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 的每个值对应于每个唯一字段,只要行彼此匹配,即 i
和 j
。但是,而是返回一个包含 13 行数据的对象,这些数据与 new_fields
中的值对应的列值相对应。我得到 13 * 55 个值,即 715 行,其中约 50% 的数据缺少值。我的输出数据表看起来像一个数据三角形。
我不确定我的问题是否有意义,但如果有的话,对我的嵌套循环策略的任何帮助都会有所帮助。我认为我的问题是我对循环实际执行的操作以及我的 if
语句可能执行的操作的概念化。
最佳答案
正如avasal所说,你想同时迭代dat和new_fields,最简单的方法是使用zip
:
for d, field in zip(dat, new_fields):
feature.SetField(field, d)
layer.CreateFeature(feature)
关于python - 如何遍历嵌套循环并枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13467147/