I was able an example of some code that worked.
/blogs/richard_fairhurst/2014/11/08/turbo-charging-data-manipulation-with-python-cursors-and-diction...
Although i don't get one field to get populated the "ParcelNum". Would it be best to add another updatecursor?
fc_dest = "C:/Temp/BuildingPermit.gdb/TaxParcels"
fields = [
("AppSubmitted","Date","","","","","NULLABLE","NON_REQUIRED",""),
("PermitIssued","Date","","","","","NULLABLE","NON_REQUIRED",""),
("PermitNum","Text","30","","","","NULLABLE","NON_REQUIRED",""),
("ParcelNum","Text","24","0","","","NULLABLE","NON_REQUIRED",""),
("Classification","Text","4000","","","","NULLABLE","NON_REQUIRED",""),
("Address","Text","100","","","","NULLABLE","NON_REQUIRED",""),
("ProjectInfo","Text","4000","","","","NULLABLE","NON_REQUIRED",""),
("Contractor","Text","255","","","","NULLABLE","NON_REQUIRED",""),
("Subdivision","Text","240","","","","NULLABLE","NON_REQUIRED",""),
("TwnRngSec","Text","32","0","","","NULLABLE","NON_REQUIRED",""),
("LivingSpace","Double","","","","","NULLABLE","NON_REQUIRED",""),
("TotalSqFt","Double","","","","","NULLABLE","NON_REQUIRED",""),
("Value_","Double","","","","","NULLABLE","NON_REQUIRED",""),
("Valuation","Double","","","","","NULLABLE","NON_REQUIRED",""),
("Status","Text","30","","","","NULLABLE","NON_REQUIRED","")
]
for field in fields:
arcpy.AddField_management(*(fc_dest,) + field)
sourceFC = "C:/Temp/BuildingPermit.gdb/Permits"
sourceFieldsList = ["PINNum", "AppSubmitted",'PermitIssued', 'PermitNum','Classification','Address', 'Contractor', 'Subdivision', 'TwnRngSec', 'LivingSpace', 'TotalSqFt', 'Value_', 'Valuation', 'Status']
valueDict = {r[0]:(r[1:]) for r in arcpy.da.SearchCursor(sourceFC, sourceFieldsList)}
updateFC = "C:/Temp/BuildingPermit.gdb/TaxParcels"
updateFieldsList = ["PIN_ID", "AppSubmitted",'PermitIssued', 'PermitNum','Classification','Address', 'Contractor', 'Subdivision', 'TwnRngSec', 'LivingSpace', 'TotalSqFt', 'Value_', 'Valuation', 'Status']
with arcpy.da.UpdateCursor(updateFC, updateFieldsList) as updateRows:
for updateRow in updateRows:
keyValue = updateRow[0]
if keyValue in valueDict:
for n in range (1,len(sourceFieldsList)):
updateRow[n] = valueDict[keyValue][n-1]
updateRows.updateRow(updateRow)
del valueDict