如何对更新游标中具有无数据类型的项目求和



使用ESRI 的 arcpy 在 python 中工作,我正在尝试使用 arcpy updateCursor 对多个字段的值求和。我正在尝试将无项转换为 0。但是,我想不出转换 None 项目的方法。 我对任何事情都持开放态度。

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'

谢谢!

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

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

另外,请注意,由于只有一个None对象,因此最好使用is进行测试而不是使用==;更Pythonic,性能更高。

您可以使用if 语句过滤列表中的None值:

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

最新更新