[GIS] Python script for identifying duplicate records (follow up)

arcgis-desktopfield-calculatorpython-parser

I am trying to calculate a field that marks duplicates and sequentially numbers them. I am using the code below that I found here: Generating sequential numbering for duplicate values in a field sorted by ObjectID.

It works, but I get a duplicate starting value before it begins sequentially numbering unless I only run the field calculator on the selected values. When I calculate after manually selecting the duplicate rows and running it on only those values, it works fine.

Here's the code:

prevFieldValue = ''
counter = 0
def GetDuplicateCounter(myFieldValue):
  global prevFieldValue
  global counter
  if myFieldValue == prevFieldValue:
    counter += 1
  else:
    counter = 1
    prevFieldValue = myFieldValue
  return counter

Results running it on all roads (nothing selected):

calculated without selection

Results running it after manually selecting the duplicated fields (not too efficient!).

calculated on selected records

Best Answer

Here's how I solved the problem:

Pre-Logic Script Code:
d = {} # creates an empty dictionary the first time

def find_duplicates(val):
    d[val] = d.setdefault(val, -1) + 1
    return d[val]

Expression: dup =
find_duplicates(!Unique_ID!)

Unfortunately, I can't remember where I found the answer but if I do, I will post the credit.

Related Question