<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Find duplicates and give incrementing value in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/find-duplicates-and-give-incrementing-value/m-p/473837#M37037</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Have you tried using a dictionary? Perhaps something along these lines:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;def main():&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; workspace = arcpy.GetParameterAsText(0) &amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.env.workspace = workspace &amp;nbsp;&amp;nbsp;&amp;nbsp; field = "newId"&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; newidfield = arcpy.AddField_management(workspace,'newId','TEXT','','','','','NULLABLE')&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id_tracking = {}&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cursor = arcpy.UpdateCursor(workspace) &amp;nbsp;&amp;nbsp;&amp;nbsp; for row in cursor: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; current_id = row.getValue(field) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if current_id in id_tracking: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count = id_tracking[current_id] &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count += 1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue(field,str(count).zfill(2)) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id_tracking[current_id] = count &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count = 1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue(field,str(count).zfill(2)) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id_tracking[current_id] = count &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.updateRow(row) &amp;nbsp;&amp;nbsp;&amp;nbsp; new_field = arcpy.CalculateField_management(workspace,"newId","!oldId!"+"!newId!",'PYTHON')&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As an added bonus, you don't need the autoIncrement function anymore.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 08 Oct 2013 15:33:43 GMT</pubDate>
    <dc:creator>DouglasSands</dc:creator>
    <dc:date>2013-10-08T15:33:43Z</dc:date>
    <item>
      <title>Find duplicates and give incrementing value</title>
      <link>https://community.esri.com/t5/python-questions/find-duplicates-and-give-incrementing-value/m-p/473836#M37036</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm trying to tweak this script to find duplicates in a field and give it a sequential value to it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;As of now the script just auto increments by concatenating the "oldId" field and the "newId" field into the "newId' field.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;current output:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;123 =&amp;gt; 12301&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;123 =&amp;gt; 12302&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;123 =&amp;gt; 12303&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;234 =&amp;gt; 23404&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;237 =&amp;gt; 23705&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would want the desired output to be:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;123 =&amp;gt; 12301&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;123 =&amp;gt; 12302&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;123 =&amp;gt; 12303&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;234 =&amp;gt; 23401&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;237 =&amp;gt; 23701 &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;so, different id's all get 01 at the end and duplicates get sequential values starting with 01 (using .zfill(2)) to keep the leading zero.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;the two fields are also TEXT fields.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;any suggestions would be great,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[HTML]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcpy&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import os&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;def main():&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspace = arcpy.GetParameterAsText(0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.env.workspace = workspace&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; field = "newId"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; newidfield = arcpy.AddField_management(workspace,'newId','TEXT','','','','','NULLABLE')&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor = arcpy.UpdateCursor(workspace)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in cursor:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue(field,str(autoIncrement()).zfill(2))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.updateRow(row)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; new_field = arcpy.CalculateField_management(workspace,"newId","!oldId!"+"!newId!",'PYTHON')&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;rec = 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;def autoIncrement():&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; global rec&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pStart = 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pInterval = 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rec == 0):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rec = pStart&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return rec&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rec = rec + pInterval&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return rec&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if __name__ == '__main__':&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Adding IDs..."&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; main()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[/HTML]&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 Oct 2013 15:09:44 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/find-duplicates-and-give-incrementing-value/m-p/473836#M37036</guid>
      <dc:creator>RodC</dc:creator>
      <dc:date>2013-10-08T15:09:44Z</dc:date>
    </item>
    <item>
      <title>Re: Find duplicates and give incrementing value</title>
      <link>https://community.esri.com/t5/python-questions/find-duplicates-and-give-incrementing-value/m-p/473837#M37037</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Have you tried using a dictionary? Perhaps something along these lines:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;def main():&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; workspace = arcpy.GetParameterAsText(0) &amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.env.workspace = workspace &amp;nbsp;&amp;nbsp;&amp;nbsp; field = "newId"&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; newidfield = arcpy.AddField_management(workspace,'newId','TEXT','','','','','NULLABLE')&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id_tracking = {}&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cursor = arcpy.UpdateCursor(workspace) &amp;nbsp;&amp;nbsp;&amp;nbsp; for row in cursor: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; current_id = row.getValue(field) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if current_id in id_tracking: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count = id_tracking[current_id] &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count += 1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue(field,str(count).zfill(2)) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id_tracking[current_id] = count &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count = 1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue(field,str(count).zfill(2)) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id_tracking[current_id] = count &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.updateRow(row) &amp;nbsp;&amp;nbsp;&amp;nbsp; new_field = arcpy.CalculateField_management(workspace,"newId","!oldId!"+"!newId!",'PYTHON')&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As an added bonus, you don't need the autoIncrement function anymore.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 Oct 2013 15:33:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/find-duplicates-and-give-incrementing-value/m-p/473837#M37037</guid>
      <dc:creator>DouglasSands</dc:creator>
      <dc:date>2013-10-08T15:33:43Z</dc:date>
    </item>
    <item>
      <title>Re: Find duplicates and give incrementing value</title>
      <link>https://community.esri.com/t5/python-questions/find-duplicates-and-give-incrementing-value/m-p/473838#M37038</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Have you tried using a dictionary? Perhaps something along these lines:&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
def main():

&amp;nbsp;&amp;nbsp;&amp;nbsp; workspace = arcpy.GetParameterAsText(0)
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.env.workspace = workspace
&amp;nbsp;&amp;nbsp;&amp;nbsp; field = "newId"


&amp;nbsp;&amp;nbsp;&amp;nbsp; newidfield = arcpy.AddField_management(workspace,'newId','TEXT','','','','','NULLABLE')

&amp;nbsp;&amp;nbsp;&amp;nbsp; id_tracking = {}

&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor = arcpy.UpdateCursor(workspace)
&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in cursor:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; current_id = row.getValue(field)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if current_id in id_tracking:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count = id_tracking[current_id]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count += 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue(field,str(count).zfill(2))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id_tracking[current_id] = count
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count = 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row.setValue(field,str(count).zfill(2))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id_tracking[current_id] = count
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.updateRow(row)
&amp;nbsp;&amp;nbsp;&amp;nbsp; new_field = arcpy.CalculateField_management(workspace,"newId","!oldId!"+"!newId!",'PYTHON')
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;As an added bonus, you don't need the autoIncrement function anymore.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Awesome this worked!, just added oldid_field = "oldId" and changed current_id = row.getValue(field) to =&amp;gt; current_id = row.getValue(oldId_field)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;to get those duplicates to increment.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 20:56:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/find-duplicates-and-give-incrementing-value/m-p/473838#M37038</guid>
      <dc:creator>RodC</dc:creator>
      <dc:date>2021-12-11T20:56:57Z</dc:date>
    </item>
    <item>
      <title>Re: Find duplicates and give incrementing value</title>
      <link>https://community.esri.com/t5/python-questions/find-duplicates-and-give-incrementing-value/m-p/473839#M37039</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hey Rodrigo, where in the code did you place the oldId_field = "oldId"? Can you post your complete code?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Sincerely,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Robert&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 May 2014 12:35:31 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/find-duplicates-and-give-incrementing-value/m-p/473839#M37039</guid>
      <dc:creator>RobertStokes</dc:creator>
      <dc:date>2014-05-23T12:35:31Z</dc:date>
    </item>
  </channel>
</rss>

