I'm working with an arcpy data access update cursor with a lot of fields that have an old/new pattern (e.g. oldField1, newField1, oldField2, newField2, etc. I have a very simple operation I'd like to do -- calculate the newField = oldField for each pair. I know I could use CalculateField_management, which is actually what I had been doing previously. But there are conflicting reports as to which is faster -- da.UpdateCursor or CalculateField. I am trying to optimize speed, so I want to try this out.
The root of my question: is there a way to use a variable instead of the list index in a da cursor. Specifically:
I know I could take the actual index for each (eg row[0] = row[1], then row[2] = row[3] the next time, etc) but that would be messy with so many fields.
With the old cursors, I could have done something like the following, but the old cursors are definitely slower than CalculateField_management, so this is not worth pursuing:
Any suggestions, workarounds, or input would be much appreciated.
Thanks,
-Erik
The root of my question: is there a way to use a variable instead of the list index in a da cursor. Specifically:
Code:
import arcpy
FC = "C:\\data\\test.gdb\\test"
fields = ["newField1", "oldField1", "newField2", "oldField2", "newField3", "oldField3", .... "newFieldn", "oldFieldn"]
#There are actually a lot more fields in this same new/old pattern
with arcpy.da.UpdateCursor(FC, fields) as rows:
i = 0
for row in rows:
j = i + 1
row[i] = row[j] #simply setting the new value = old value for each old/new pair, but get "list index out of range" error
i = i + 1With the old cursors, I could have done something like the following, but the old cursors are definitely slower than CalculateField_management, so this is not worth pursuing:
Code:
baseFieldNameList = ["Field1", "Field2", "Field3", ... "Fieldn")
rows = arcpy.UpdateCursor
for field in baseFieldNameList:
newField = "new" + field
oldField = "old" + field
oldValue = row.getValue(oldField)
row.setValue(newField, oldValue)
rows.updateRow
del rows, rowThanks,
-Erik