如何对updatecorsor中没有数据类型的项求和

2024-09-27 23:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中使用ESRI的arcpy,我尝试使用arcpy updatecorsor对多个字段的值求和。我正在尝试将“无”项转换为0。但是,我找不到转换“无”项的方法。我什么都愿意

with arcpy.da.UpdateCursor(feature_class, score_fields) as cursor:
    for row in cursor:
        [0 if x==None else x+4 for x in row]
        print row
        row[len(score_fields)-1] = sum(row[i] for i in range(len(score_fields)))
        cursor.updateRow(row)

退货:

[-4, -4, None, None, -4, None, -4, -4]

有错误:

TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'

谢谢


Tags: 方法innonefieldsforlenwithcursor
2条回答

您应该通过将列表理解的结果分配给row来更新row

for row in cursor:
    row = [0 if x is None else x+4 for x in row]

另外,请注意,由于只有一个None对象,因此使用is测试比使用==更好;更多的Python,更多的表演

可以使用if语句筛选列表中的None值:

sum(row[i] for i in range(len(score_fields)) if row[i] is not None)

相关问题 更多 >

    热门问题