Solved! Go to Solution.
if not compareVal in ['KA', 'KP', 'PA', 'PP']: fieldName = 'Grade_' + str(int(compareVal)) elif not compareVal in ['PA', 'PP']: fieldName = 'Grade_K' count += row.getValue(fieldName)
if not compareVal in ['KA', 'KP', 'PA', 'PP', 'K', 'P', 'Kitchen Sink', 'other']: fieldName = 'Grade_' + str(int(compareVal)) elif not compareVal in ['PA', 'PP', 'P', 'any other preschool']: fieldName = 'Grade_K' count += row.getValue(fieldName)
if not compareVal in ['KA', 'KP', 'PA', 'PP', 'each K or P anticipated values separately listed like this']: fieldName = 'Grade_' + str(int(compareVal)) if 'P' not in compareVal: fieldName = 'Grade_K' count += row.getValue(fieldName)
query = arcpy.AddFieldDelimiters(shp, outField) + ' IS NOT NULL' rows = arcpy.UpdateCursor(shp, query) for row in rows: outGrades = row.getValue(outField).split(',') outGrades.sort() count = 0 compareVal = outGrades[0] for each in outGrades: if each == compareVal: count += 1 else: if not ('K' or 'P') in compareVal: fieldName = 'Grade_' + str(int(compareVal)) if compareVal[0:1] == 'K': fieldName = 'Grade_K' count += row.getValue(fieldName) row.setValue(fieldName, count) rows.updateRow(row) count = 1 compareVal = each # load the last unique val if not ('K' or 'P') in compareVal: fieldName = 'Grade_' + str(int(compareVal)) if compareVal[0:1] == 'K': fieldName = 'Grade_K' count += row.getValue(fieldName) row.setValue(fieldName, count) rows.updateRow(row) del row, rows
>>> testval = 'KKKKK' >>> if not ('K' and 'P') in testval: print 'true' true >>> if not 'K' in testval and not 'P' in testval: print 'true' >>>
query = arcpy.AddFieldDelimiters(shp, outField) + ' IS NOT NULL' rows = arcpy.UpdateCursor(shp, query) for row in rows: outGrades = row.getValue(outField).split(',') outGrades.sort() count = 0 compareVal = outGrades[0] for each in outGrades: if each == compareVal: count += 1 else: if not 'K' in compareVal and not 'P' in compareVal: fieldName = 'Grade_' + str(int(compareVal)) if compareVal[0:1] == 'K': fieldName = 'Grade_K' count += row.getValue(fieldName) row.setValue(fieldName, count) rows.updateRow(row) count = 1 compareVal = each # load the last unique val if not 'K' in compareVal and not 'P' in compareVal: fieldName = 'Grade_' + str(int(compareVal)) if compareVal[0:1] == 'K': fieldName = 'Grade_K' count += row.getValue(fieldName) row.setValue(fieldName, count) rows.updateRow(row) del row, rows
import arcpy # Change these 2 input parameters accordingly... fc = r'E:\schoolTestData\test.gdb\schoolJoinToPolys' outField = 'outGrades' delField = arcpy.AddFieldDelimiters(fc, outField) # This query works whether shapefile or gdb fc. query = delField + ' IS NOT NULL AND ' + delField + ' NOT IN (\' \')' rows = arcpy.UpdateCursor(fc, query) for row in rows: # This populates a list, row by row... # outGradesRaw will potentially contain 'P' vals. # outGrades is a new list with 'P' vals eliminated. outGradesRaw = row.getValue(outField).split(',') outGrades = [] for each in outGradesRaw: if not each[0:1] == 'P': outGrades.append(each) # sorted outGrades for loop, comparison of successive items outGrades.sort() # initializing count count = 0 compareVal = outGrades[0] # Loop over the sorted list to count. for each in outGrades: if each == compareVal: count += 1 else: # This conditionally sets the fieldName to load... if not compareVal[0:1] == 'K': fieldName = 'Grade_' + str(int(compareVal)) else: fieldName = 'Grade_K' # Successive K vals may not match, # so will be temp stored in att table, # then fetched to make a cumulative count. count += row.getValue(fieldName) # count committed to row obj from att table row.setValue(fieldName, count) # row obj committed to cursor obj of att table rows.updateRow(row) # resetting count to 1 count = 1 # setting compareVal to current val compareVal = each # load the count for the last val, identical to part of above block if not compareVal[0:1] == 'K': fieldName = 'Grade_' + str(int(compareVal)) else: fieldName = 'Grade_K' count += row.getValue(fieldName) row.setValue(fieldName, count) rows.updateRow(row) del rows