У меня проблема с моими вложенными циклами. Я получаю вывод, но он дублирует каждый вывод для количества полей в моем наборе данных.Как пройти через вложенный цикл и перечислить
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
.
вы должны перебрать 'Перечислит (Даты)' и 'enumerate (new_fields)' в то же время, а не один внутри другого ... – avasal
@avasal, спасибо за подсказку. Но, как бы я это сделал, одновременно? – hylaeus
@avasal, я использовал функцию 'zip', но я все равно получаю тот же результат. Какие-либо предложения? – hylaeus