<?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: Method to create unique values for two related attributes and make two variables in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/method-to-create-unique-values-for-two-related/m-p/224819#M17360</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Code is working nicely that Arek supplied, but I think I need to clarify a bit more.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Column1 / Column3&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1000 : PlaceA&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1000 : PlaceA&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1005 : PlaceA&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1005 : PlaceA&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1009 : PlaceB&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1009 : PlaceB&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After running the dictionary code I found similar named places in Column 3 but with different codes in Column 1. This was something I wasn't aware of until now. I will need to distinguish between same name using different codes.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I could not get the original definition query code to work:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;'fldCode in (%s)' % map_dict[str(fldName)].join(', ')&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;so substituted with:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;queryStr = "\"" + fldCode + "\" = " + str(row[1])&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My complete code follows, but needs further work to achieve my desired output.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;import arcpy&amp;nbsp; fc = r"D:\Locations.gdb\Places" fldName = "Place_Name" # Column 3 = row[0] fldCode = "Place_Code" # Column 1 = row[1]&amp;nbsp; map_dict = {}&amp;nbsp; with arcpy.da.SearchCursor(fc, (fldName, fldCode)) as collector: &amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValues = sorted(set(collector)) &amp;nbsp;&amp;nbsp;&amp;nbsp; if not row[0] in map_dict.keys(): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map_dict[row[0]] = [] &amp;nbsp;&amp;nbsp;&amp;nbsp; if not row[1] in map_dict[row[0]]: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map_dict[row[0]].append(row[1])&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; queryStr = "\"" + fldCode + "\" = " + str(row[1])&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mxd = arcpy.mapping.MapDocument(r"D:\Places.mxd")&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; elm = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT")[0] &amp;nbsp;&amp;nbsp;&amp;nbsp; elm.text = "Place: " + row[0]&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for lyr in arcpy.mapping.ListLayers(mxd, "", df): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if lyr.name == "Places":&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if lyr.supports("DEFINITIONQUERY"): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyr.definitionQuery = queryStr&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.RefreshActiveView()&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.mapping.ExportToPDF(mxd, r"D:\Places\Output" + "\\" + row[0] + "_" + row[1] + ".pdf")&amp;nbsp;&amp;nbsp; del mxd&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am trying to make map outputs that will only show places based on their unique code values.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I think I may have what I need now, but will notify forum if issues remaining.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Will investigate dictionaries further.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Craig&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 19 May 2013 23:12:30 GMT</pubDate>
    <dc:creator>CPoynter</dc:creator>
    <dc:date>2013-05-19T23:12:30Z</dc:date>
    <item>
      <title>Method to create unique values for two related attributes and make two variables</title>
      <link>https://community.esri.com/t5/python-questions/method-to-create-unique-values-for-two-related/m-p/224817#M17358</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi All,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The situation:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1 FC / 3 related columns / definitionQuery on one field has ' as part of field name for only some records which is causing problems&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Column 1 = numeric code&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Coumns 2 and 3 = text (both have troublesome ' when it comes to definition query)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I want to use Column 1 value that relates to Column 3, use Column 1 value for definition query to get around ' issues, but then need value of Column 3 for layout text element.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;How do I get a unique listing of the related column 1 and 3 and then seperate their values for two subsequent operations?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am thinking da.SearchCursor but unsure how to get fields in, make unique values and seperate values.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thankyou in advance.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Using ArcGIS 10.1&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Craig&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 May 2013 23:58:32 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/method-to-create-unique-values-for-two-related/m-p/224817#M17358</guid>
      <dc:creator>CPoynter</dc:creator>
      <dc:date>2013-05-16T23:58:32Z</dc:date>
    </item>
    <item>
      <title>Re: Method to create unique values for two related attributes and make two variables</title>
      <link>https://community.esri.com/t5/python-questions/method-to-create-unique-values-for-two-related/m-p/224818#M17359</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I get it right, you want to get values from&amp;nbsp; Column 1 (Numeric) which corresponds to unique values from Column 3 (Text).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Assuming there can be more then one unique numeric values for each text value from Column 3 i I would suggest using dictionary with Column 3 value as key and list of Column 1 values as value. One important thing is that each value in Column 1 can correspond only to one value in Column 3. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Considering given assumptions code would be something like:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
map_dict = {}
with arcpy.da.SearchCursor(fc, ['Colmun 3', 'Column 1'] as collector:
&amp;nbsp; for row in collector:
&amp;nbsp;&amp;nbsp;&amp;nbsp; if not row[0] in map_dict.keys():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map_dict[row[0]] = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; if not row[1] in map_dict[row[0]]:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map_dict[row[0]].append(row[1])
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now you can use &lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
'Column1 in (%s)' % map_dict[Column3value].join(', ')
&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;to build definition query, and Column3 value in other places.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope it will help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Arek&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 10:57:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/method-to-create-unique-values-for-two-related/m-p/224818#M17359</guid>
      <dc:creator>ArkadiuszMatoszka</dc:creator>
      <dc:date>2021-12-11T10:57:00Z</dc:date>
    </item>
    <item>
      <title>Re: Method to create unique values for two related attributes and make two variables</title>
      <link>https://community.esri.com/t5/python-questions/method-to-create-unique-values-for-two-related/m-p/224819#M17360</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Code is working nicely that Arek supplied, but I think I need to clarify a bit more.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Column1 / Column3&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1000 : PlaceA&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1000 : PlaceA&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1005 : PlaceA&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1005 : PlaceA&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1009 : PlaceB&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1009 : PlaceB&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After running the dictionary code I found similar named places in Column 3 but with different codes in Column 1. This was something I wasn't aware of until now. I will need to distinguish between same name using different codes.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I could not get the original definition query code to work:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;'fldCode in (%s)' % map_dict[str(fldName)].join(', ')&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;so substituted with:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;queryStr = "\"" + fldCode + "\" = " + str(row[1])&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My complete code follows, but needs further work to achieve my desired output.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;import arcpy&amp;nbsp; fc = r"D:\Locations.gdb\Places" fldName = "Place_Name" # Column 3 = row[0] fldCode = "Place_Code" # Column 1 = row[1]&amp;nbsp; map_dict = {}&amp;nbsp; with arcpy.da.SearchCursor(fc, (fldName, fldCode)) as collector: &amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValues = sorted(set(collector)) &amp;nbsp;&amp;nbsp;&amp;nbsp; if not row[0] in map_dict.keys(): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map_dict[row[0]] = [] &amp;nbsp;&amp;nbsp;&amp;nbsp; if not row[1] in map_dict[row[0]]: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map_dict[row[0]].append(row[1])&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; queryStr = "\"" + fldCode + "\" = " + str(row[1])&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mxd = arcpy.mapping.MapDocument(r"D:\Places.mxd")&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; elm = arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT")[0] &amp;nbsp;&amp;nbsp;&amp;nbsp; elm.text = "Place: " + row[0]&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for lyr in arcpy.mapping.ListLayers(mxd, "", df): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if lyr.name == "Places":&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if lyr.supports("DEFINITIONQUERY"): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyr.definitionQuery = queryStr&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.RefreshActiveView()&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.mapping.ExportToPDF(mxd, r"D:\Places\Output" + "\\" + row[0] + "_" + row[1] + ".pdf")&amp;nbsp;&amp;nbsp; del mxd&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am trying to make map outputs that will only show places based on their unique code values.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I think I may have what I need now, but will notify forum if issues remaining.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Will investigate dictionaries further.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Craig&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 19 May 2013 23:12:30 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/method-to-create-unique-values-for-two-related/m-p/224819#M17360</guid>
      <dc:creator>CPoynter</dc:creator>
      <dc:date>2013-05-19T23:12:30Z</dc:date>
    </item>
    <item>
      <title>Re: Method to create unique values for two related attributes and make two variables</title>
      <link>https://community.esri.com/t5/python-questions/method-to-create-unique-values-for-two-related/m-p/224820#M17361</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Code works a treat. Arek's code for dictionaries was the clincher.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Craig&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 May 2013 02:27:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/method-to-create-unique-values-for-two-related/m-p/224820#M17361</guid>
      <dc:creator>CPoynter</dc:creator>
      <dc:date>2013-05-20T02:27:18Z</dc:date>
    </item>
  </channel>
</rss>

