<?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: Error accessing dictionary values in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/error-accessing-dictionary-values/m-p/488925#M38255</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, that's what it would mean, except I can see it's there. Printing the keys and values prints the correct sequences.&lt;/P&gt;&lt;P&gt;Anyway, I got it to work by changing &lt;EM&gt; alias = dictflds[fld.name]&lt;/EM&gt; to &lt;EM&gt;‌alias = dictflds.get(fld.name, 'None')&lt;/EM&gt;‌. No idea why the first method didn't work if the second does, but I've spent enough time on this. Thanks for the help, appreciate it.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 10 Dec 2014 13:48:14 GMT</pubDate>
    <dc:creator>Zeke</dc:creator>
    <dc:date>2014-12-10T13:48:14Z</dc:date>
    <item>
      <title>Error accessing dictionary values</title>
      <link>https://community.esri.com/t5/python-questions/error-accessing-dictionary-values/m-p/488921#M38251</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In the code below, line 14,&amp;nbsp; 'alias = dict[fld.name]', always throws an exception. I don't see why; printing out fld.name works just fine. Also, the exception message is the field name printing correctly. &lt;/P&gt;&lt;P&gt;Printing the dictionary keys and values also works fine. The ultimate goal is to get a string to set as the field alias using AlterField. Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;with arcpy.da.SearchCursor(metatable, metaflds) as rows:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in rows:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if not moe in row[1]:
&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; fn = row[1].replace(' ', '')
&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; fn = fn.replace(est, '')
&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; dict[row[0]] = fn

&amp;nbsp;&amp;nbsp;&amp;nbsp; # Get list of tables to add alias to
&amp;nbsp;&amp;nbsp;&amp;nbsp; tbls = arcpy.ListTables()
&amp;nbsp;&amp;nbsp;&amp;nbsp; for tbl in tbls:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tblflds = arcpy.ListFields(tbl)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for fld in tblflds:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&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; alias = dict[fld.name]&amp;nbsp;&amp;nbsp; # exception raised here
&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; print(alias)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except Exception as e:
&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; import traceback
&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; import sys
&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; tb = sys.exc_info()[2]
&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; print('Oh no!')
&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; print("Line {0}".format(tb.tb_lineno))
&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; print(e.message)&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 21:30:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/error-accessing-dictionary-values/m-p/488921#M38251</guid>
      <dc:creator>Zeke</dc:creator>
      <dc:date>2021-12-11T21:30:49Z</dc:date>
    </item>
    <item>
      <title>Re: Error accessing dictionary values</title>
      <link>https://community.esri.com/t5/python-questions/error-accessing-dictionary-values/m-p/488922#M38252</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;A few things.&amp;nbsp; What is the error message, specifically?&amp;nbsp; Second, it seems you are naming your dictionary 'dict', which shadows the built-in dict constructor.&amp;nbsp; Although shadowing a built-in doesn't break the code, per se, it does make it more difficult to read and therefore more prone to errors.&amp;nbsp; Third, the code snippet doesn't show the dictionary object being created, is that just handled earlier?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Dec 2014 19:09:09 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/error-accessing-dictionary-values/m-p/488922#M38252</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2014-12-08T19:09:09Z</dc:date>
    </item>
    <item>
      <title>Re: Error accessing dictionary values</title>
      <link>https://community.esri.com/t5/python-questions/error-accessing-dictionary-values/m-p/488923#M38253</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Joshua. I changed the name of the dictionary to dictflds. The error I get if I try to access the value outside of the try block is &lt;EM style="color: #e23d39;"&gt;&lt;STRONG&gt;KeyError: u'B01001e1'&lt;/STRONG&gt;, &lt;/EM&gt;and the error when in the try block reads &lt;STRONG&gt;&lt;SPAN style="color: #e23d39;"&gt;&lt;EM&gt;Line 45, B01001e1&lt;/EM&gt;&lt;/SPAN&gt;‌&lt;/STRONG&gt;, where the line number is wherever I first try to access the dictionary value and B01001e1 is a valid field name. It's not that particular value that's a problem; the error occurs for every field. I've tried enclosing it in str(), setting it to a variable both when accessing it and setting the key, no luck. If I just print fld.name, works fine. Full code (minus header comments) below.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy, os
from arcpy import env
env.workspace = r'K:\Projects\Other Depts\Planning\Lori_Census\Census.gdb'

def main():
&amp;nbsp;&amp;nbsp;&amp;nbsp; metatable = 'BG_Metadata_2012'
&amp;nbsp;&amp;nbsp;&amp;nbsp; metaflds = ('Short_Name', 'Full_Name')
&amp;nbsp;&amp;nbsp;&amp;nbsp; est = '--(Estimate)'
&amp;nbsp;&amp;nbsp;&amp;nbsp; moe = 'Margin of Error'
&amp;nbsp;&amp;nbsp;&amp;nbsp; dictflds = {}

&amp;nbsp;&amp;nbsp;&amp;nbsp; # Get dictionary of short names and corresponding full names from metadata
&amp;nbsp;&amp;nbsp;&amp;nbsp; # table, skipping moe fields and removing whitespace and estimate text from
&amp;nbsp;&amp;nbsp;&amp;nbsp; # full name.
&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.SearchCursor(metatable, metaflds) as rows:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in rows:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if not moe in row[1]:
&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; fn = row[1].replace(' ', '')
&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; fn = fn.replace(est, '')
&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; dictflds[row[1]] = fn

&amp;nbsp;&amp;nbsp;&amp;nbsp; for k, v in dictflds.iteritems()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(' : '.join([k, v])&amp;nbsp;&amp;nbsp; # works fine

&amp;nbsp;&amp;nbsp;&amp;nbsp; # Get list of tables to add alias to
&amp;nbsp;&amp;nbsp;&amp;nbsp; tbls = arcpy.ListTables()
&amp;nbsp;&amp;nbsp;&amp;nbsp; for tbl in tbls:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tblflds = arcpy.ListFields(tbl)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for fld in tblflds:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&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; print(fld.name)&amp;nbsp;&amp;nbsp; # works fine
&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; alias = dictflds[fld.name]&amp;nbsp;&amp;nbsp; # exception raised here
&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; print(alias)
&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; print(' : '.join[tbl, fld.name, alias])
&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; arcpy.AlterField_management(tbl, fld, new_field_alias=alias)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except Exception as e:
&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; import traceback
&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; import sys
&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; tb = sys.exc_info()[2]
&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; print('Oh no!')
&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; print("Line {0}".format(tb.tb_lineno))
&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; print(e.message)&amp;nbsp;&amp;nbsp; # this prints the fld.name value

if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; main()&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 21:30:52 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/error-accessing-dictionary-values/m-p/488923#M38253</guid>
      <dc:creator>Zeke</dc:creator>
      <dc:date>2021-12-11T21:30:52Z</dc:date>
    </item>
    <item>
      <title>Re: Error accessing dictionary values</title>
      <link>https://community.esri.com/t5/python-questions/error-accessing-dictionary-values/m-p/488924#M38254</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The Key Error outside of the Try block is the crux of the issue.&amp;nbsp; As far as the interpreter is concerned, there is no key corresponding to the value you are giving it, so it returns a Key Error, i.e., u'B01001e1' is not key, period.&amp;nbsp; At this point, are there any differences in capitalization or white spaces?&amp;nbsp; I don't think it is an text encoding issue.&amp;nbsp; Trying printing your dictionary (print dictflds) and double checking that there is in fact a u'B01001e1' key.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Dec 2014 20:17:36 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/error-accessing-dictionary-values/m-p/488924#M38254</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2014-12-08T20:17:36Z</dc:date>
    </item>
    <item>
      <title>Re: Error accessing dictionary values</title>
      <link>https://community.esri.com/t5/python-questions/error-accessing-dictionary-values/m-p/488925#M38255</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, that's what it would mean, except I can see it's there. Printing the keys and values prints the correct sequences.&lt;/P&gt;&lt;P&gt;Anyway, I got it to work by changing &lt;EM&gt; alias = dictflds[fld.name]&lt;/EM&gt; to &lt;EM&gt;‌alias = dictflds.get(fld.name, 'None')&lt;/EM&gt;‌. No idea why the first method didn't work if the second does, but I've spent enough time on this. Thanks for the help, appreciate it.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Dec 2014 13:48:14 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/error-accessing-dictionary-values/m-p/488925#M38255</guid>
      <dc:creator>Zeke</dc:creator>
      <dc:date>2014-12-10T13:48:14Z</dc:date>
    </item>
  </channel>
</rss>

