2

我正在尝试从名为 DEV_TYPE 的字段中对访问表中的一些记录进行游标搜索。我想将每条记录与我之前在脚本中构建的已知值列表进行比较:

(devcat 列表)

我想打印出列表中没有出现的任何值。记录中的某些值也为 Null。我想将我的 if 语句设置为仅打印出列表中未出现的值,但我也不想为 Null 值打印出“无”。我的脚本如下:

if field.name == "DEV_TYPE":
for iRow in arcpy.SearchCursor(fc):
      if not iRow.DEV_TYPE is None or iRow.DEV_TYPE not in devcatList:
          print str(iRow.OBJECTID) + " - " + str(iRow.DEV_TYPE)

我玩过' if not x is None'到' if x is not None'。or将 ' '更改为 ' and' (即使它是反直觉的),但我的打印输出要么返回所有值,要么不返回值,或者只返回 ' None'....基本上所有我不想要的。我确定我在做一些愚蠢的事情。有人能指出我的愚蠢是什么吗?

谢谢,迈克

4

2 回答 2

4

我想你想要if iRow.DEV_TYPE is not None and iRow.DEV_TYPE not in devcatList:

于 2012-06-21T16:09:14.063 回答
2

也许是这样的:

if field.name == "DEV_TYPE":
    for iRow in arcpy.SearchCursor(fc):
       dev_type = iRow.DEV_TYPE
       if dev_type is not None and dev_type not in devcatList:
           print "{} - {}".format(iRow.OBJECTID, iRow.DEV_TYPE)

if dev_type is not none可以更方便地(但不太精确)说明,if dev_type因为None它相当于False在条件上下文中。我还冒昧print地以更惯用的方式重写了这句话。

于 2012-06-21T16:05:36.453 回答