Replacing attribute in layer's attribute table using PyQGIS?

If you are just copying an attribute value from one selected feature and inserting it into a field of a selected feature in another layer, might I suggest a simpler approach to access and store those attribute fields & values which doesn't involve traversing multiple, nested dictionaries?

If know both your field names you can do this using the lookupField() and attributes() methods.

I hope you might have success with the code below:

_project = QgsProject().instance()
# This is the layer we are copying attributes from (your GPS Layer)
layer1 = _project.mapLayersByName('2019 SEASONAL MH06-25')[0]
layer1_feat = layer1.selectedFeatures()[0]
# get index of relevant field in first layer by its name (your 'field 4' I think)
layer1_fld_idx = layer1_feat.fields().lookupField('field_4')
# get the attribute value in that field for the selected feature
layer1_val = layer1_feat.attributes()[layer1_fld_idx]

# this is layer we are copying attributes to (your structure layer)
layer2 = _project.mapLayersByName('Structures')[0]
layer2_feat = layer2.selectedFeatures()[0]
# get id of selected feature
layer2_fid = layer2_feat.id()
# get index of field we want to copy into (your 'tc' field?)
layer2_fld_idx = layer2.fields().lookupField('tc')
# create dictionary of field index and attribute value
atts = {layer2_fld_idx: layer1_val}
# change attributes, passing the feature id and attribute map
layer2.dataProvider().changeAttributeValues({layer2_fid: atts})

I tested this in QGIS 3.4 with a couple of my own layers, copying elevation values between selected features.