Error with UpdateCursor: Object does not support data assignment?

471
2
Jump to solution
01-23-2020 12:05 PM
RyanHowell1
New Contributor III

I have a field for aspect (short integer) with values ranging from 1-4. I want to have 3 additional columns: aspect2, aspect3, aspect4 that are calculated based on the aspect field (for example, if the aspect field is 2, then aspect2 = 1, aspect3 =0 and aspect4 =0).

Here is the code I have:

arcpy.AddField_management(input, 'aspect2', 'SHORT')
arcpy.AddField_management(input, 'aspect3', 'SHORT')
arcpy.AddField_management(input, 'aspect4', 'SHORT')

with arcpy.da.UpdateCursor(input, ['aspect', 'aspect2', 'aspect3', 'aspect4']) as cursor:
for row in cursor:
if cursor[0] == 2:
cursor[1] = 1
cursor[2] = 0
cursor[3] = 0
cursor.updateRow(row)
elif cursor[0] == 3:
cursor[1] = 0
cursor[2] = 1
cursor[3] = 0
cursor.updateRow(row)
elif cursor[0] == 4:
cursor[1] = 0
cursor[2] = 0
cursor[3] = 1
cursor.updateRow(row)
else:
cursor[1] = 0
cursor[2] = 0
cursor[3] = 0
cursor.updateRow(row)

When I run it, I get the following error:

Traceback (most recent call last):
File "<string>", line 19, in <module>
TypeError: 'da.UpdateCursor' object does not support item assignment

I'm not sure if it's a basic syntax issue (it's very possible) or I'm not thinking about it correctly. Any ideas are greatly appreciated.

0 Kudos
1 Solution

Accepted Solutions
DanPatterson_Retired
MVP Esteemed Contributor
for row in cursor:
if row[0] == 2:
row[1] = 1
.....

see the code example here

UpdateCursor—Data Access module | ArcGIS Desktop 

View solution in original post

2 Replies
DanPatterson_Retired
MVP Esteemed Contributor
for row in cursor:
if row[0] == 2:
row[1] = 1
.....

see the code example here

UpdateCursor—Data Access module | ArcGIS Desktop 

View solution in original post

RyanHowell1
New Contributor III

Thanks Dan. I figured it would be something embarrassingly obvious like that. It worked great.