如何使用UpdateCursor用列表值更新属性表字段?
问题解决:ArcPy UpdateCursor 赋值报错 TypeError
错误原因分析
- 每次循环都把
i重置为0,导致始终只取列表第一个元素 updateRow()要求传入序列(比如元组),直接传单个数值不符合参数要求range(1,1423)生成的是1到1422的数值,和1423个要素数量不匹配
修正后的代码
import arcpy fc = "C:/kdsfdlsjflj/something.shp" field = "Name" # 生成1到1423的数值列表,注意range右边界要+1 xlist = list(range(1, 1424)) with arcpy.da.UpdateCursor(fc, field) as cursor: # 用enumerate同时获取索引和游标行 for i, row in enumerate(cursor): # 将数值包装成序列,赋值给对应字段位置 row[0] = xlist[i] cursor.updateRow(row)
更简洁的写法
直接用zip把游标和列表配对,不用手动管理索引:
import arcpy fc = "C:/kdsfdlsjflj/something.shp" field = "Name" xlist = list(range(1, 1424)) with arcpy.da.UpdateCursor(fc, field) as cursor: # 同时遍历游标行和数值列表 for row, val in zip(cursor, xlist): row[0] = val cursor.updateRow(row)
内容的提问来源于stack exchange,提问作者Sara
相关产品推荐
相关产品推荐

