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