I'm new to dictionaries and am still a Python beginner. I'm trying to update field(s) based off of field values in another table using the OID field as a key. The search cursor dictionary has been filtered down (in an effort to conditionally update the values in the Line_Count_13_8 field) with a where clause for the portion of the script where I am receiving an error. I am getting a KeyError: [0] error on this line:
<SPAN class="keyword token">if</SPAN> search_feats_138<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">==</SPAN> upd_row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="line-numbers-rows"><SPAN></SPAN></SPAN>
Here is the whole block:
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">from</SPAN> arcpy <SPAN class="keyword token">import</SPAN> env
<SPAN class="keyword token">import</SPAN> time
start <SPAN class="operator token">=</SPAN> time<SPAN class="punctuation token">.</SPAN>time<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> start
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Start"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>OverwriteOutput <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">True</SPAN>
subLayer<SPAN class="operator token">=</SPAN><SPAN class="string token">'C:\Topo_Check_Tess_V5.gdb\Sub'</SPAN>
transLayer<SPAN class="operator token">=</SPAN><SPAN class="string token">'C:\Topo_Check_Tess_V5.gdb\TL'</SPAN>
ppLayer<SPAN class="operator token">=</SPAN><SPAN class="string token">'C:\Topo_Check_Tess_V5.gdb\PP'</SPAN>
pp_trans_GUJoin <SPAN class="operator token">=</SPAN><SPAN class="string token">'C:\Topo_Check_Tess_V5.gdb\pp_trans_GU_SpatialJoin'</SPAN>
SubLayer_pp_trans_GUJoin <SPAN class="operator token">=</SPAN> <SPAN class="string token">'C:\Topo_Check_Tess_V5.gdb\SubLayer_pp_trans_GUSpatialJoin'</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SpatialJoin_analysis <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"SubLayer_Layer"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"pp_trans_GUJoin_Layer"</SPAN><SPAN class="punctuation token">,</SPAN> SubLayer_pp_trans_GUJoin<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'JOIN_ONE_TO_ONE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'KEEP_ALL'</SPAN><SPAN class="punctuation token">,</SPAN> fieldMappings<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WITHIN_A_DISTANCE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">.</SPAN><SPAN class="number token">000002</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
This section works:
<SPAN class="comment token">#add in Line_Count field </SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"Line_Count"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHORT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
search_feats <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN>f<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN>f<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">for</SPAN> f <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>SubLayer_pp_trans_GUJoin<SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"OBJECTID"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Join_Count"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">}</SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>UpdateCursor<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"OBJECTID"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Line_Count"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> upd_cur<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> upd_row <SPAN class="keyword token">in</SPAN> upd_cur<SPAN class="punctuation token">:</SPAN>
upd_row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> search_feats<SPAN class="punctuation token">[</SPAN>upd_row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN>
upd_cur<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>upd_row<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Line_Counts Updated"</SPAN>
<SPAN class="keyword token">del</SPAN> upd_cur<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>This section does not work - KeyError: [0] on line 13:
<SPAN class="comment token">#add in Line_Count_13_8 field</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"Line_Count_13_8"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHORT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#where clause</SPAN>
where_13_8 <SPAN class="operator token">=</SPAN> <SPAN class="string token">' "VT" = 13.8 '</SPAN>
<SPAN class="comment token">#arcpy.MakeFeatureLayer_management(SubLayer_pp_trans_GUJoin, "Sub_PP_Trans_Join_13_8", where_13_8)</SPAN>
search_feats_13_8 <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN>f<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN>f<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">for</SPAN> f <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>SubLayer_pp_trans_GUJoin<SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"OBJECTID"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Join_Count"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> where_13_8<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">}</SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>UpdateCursor<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"OBJECTID"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Line_Count_13_8"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> upd_cur<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> upd_row <SPAN class="keyword token">in</SPAN> upd_cur<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> search_feats_13_8<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">==</SPAN> upd_row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN>
upd_row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> search_feats_13_8<SPAN class="punctuation token">[</SPAN>upd_row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
upd_row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN>
upd_cur<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>upd_row<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Line_Count_13.8 Updated"</SPAN>
<SPAN class="keyword token">del</SPAN> upd_curl
end <SPAN class="operator token">=</SPAN> time<SPAN class="punctuation token">.</SPAN>time<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN>end <SPAN class="operator token">-</SPAN> start<SPAN class="punctuation token">)</SPAN><SPAN class="operator token">/</SPAN><SPAN class="number token">60</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Any suggestions? Thanks in advance!