In the code below, I am able to create and print multiple lists that contain field names for each shapefile. This is done by creating a list of file paths, pointing to a shapefile, and looping through the list passing each shapefile into the arcpy.ListFields function.
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="comment token">#Define the Workspace</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"C:\TestFolder"</SPAN>
dbf1 <SPAN class="operator token">=</SPAN> <SPAN class="string token">"APExistOnlyEdit.dbf"</SPAN>
myfield <SPAN class="operator token">=</SPAN> <SPAN class="string token">"FI_PATH"</SPAN>
filepathlist <SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN>row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">for</SPAN> row <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>dbf1<SPAN class="punctuation token">,</SPAN>myfield<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="comment token">#print(filepathlist)</SPAN>
possiblefieldlist <SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">'AP_FIPS'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_BLDGCOM'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_TYPE'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_STATUS'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_ID'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_HOUSENU'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_HALFADD'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_PREDIR'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_PRETYPE'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_STNAME'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'AP_SUFTYPE'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_SUFDIR'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_UNITTYP'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_UNIT'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_BUILDIN'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_FULLADD'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_CITY'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_STATE'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'AP_ZIP'</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="comment token">#Loop through shapefiles in fielpathlist</SPAN>
<SPAN class="comment token">#Get field names for each shapefile and pass into lists</SPAN>
<SPAN class="keyword token">for</SPAN> thisFile <SPAN class="keyword token">in</SPAN> filepathlist<SPAN class="punctuation token">:</SPAN>
ContainedFieldNames <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>f<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">.</SPAN>upper<SPAN class="punctuation token">(</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>ListFields<SPAN class="punctuation token">(</SPAN>thisFile<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>ContainedFieldNames<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Fields with Field Names thought to be in Shapefile</SPAN>
<SPAN class="comment token">#Search though Fields and rows and make lists of field names though to be in shapefile </SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>dbf1<SPAN class="punctuation token">,</SPAN>possiblefieldlist<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> row <SPAN class="keyword token">in</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
fields <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>a<SPAN class="punctuation token">.</SPAN>upper<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> a <SPAN class="keyword token">in</SPAN> row <SPAN class="keyword token">if</SPAN> a<SPAN class="punctuation token">.</SPAN>strip<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">!=</SPAN> <SPAN class="string token">''</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>fields<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></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Below is the output when I print the list of field names found in each shapefile. There are three separate lists, one for each shapefile.
<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'FID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SHAPE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'FULL_ADDRE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STREET_ADD'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CITY_ST_ZI'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'PREFIX_DIR'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'HALF_ADDRE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'HOUSE_NUMB'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STREET_NAM'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STREET_TYP'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SUFFIX_DIR'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'UNIT_TYPE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'UNIT_ID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CITY'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STATE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ZIPCODE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'PARCEL_NUM'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'PARCEL_N_1'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'HOUSE_NU_1'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'HOUSE_NU_2'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STATUS'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ASSEMBLY_S'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SENATE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'DISTRICT'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'COUNCIL'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'GRIDNUM'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'PHYSICAL_A'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'PUBDATE'</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'FID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SHAPE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ADD_ID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'HSE_NUMB'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SNAM_PREMO'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SNAM_PREDI'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SNAME'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SNAM_POSTY'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SNAM_POSDI'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SNAM_POSMO'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'FULL_STREE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SUB_ADD_TY'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SUB_ADD_ID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'FULL_ADDRE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'PLACE_NAME'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'FNSB_COMM'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'FECC_COMM'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ZIPCODE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ADD_TYPE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'NOTES'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STATUS'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'MS_EXCEPTI'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'NO_MSAG'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'GLOBALID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CREATED_US'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CREATED_DA'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'LAST_EDITE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'LAST_EDI_1'</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'FID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SHAPE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'OBJECTID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'P_ID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ACCOUNT'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'TAXID_LOKI'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ADRSNUM'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'P_ROADNME'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ROADNME'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'S_ROADNME'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'PS_ROADNME'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ADRSNUM_S'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ZIP'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'LAT'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'LONG'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ADDRESS'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'COMMUNITY'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'GLOBALID'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
In addition, I use the arcpy.da.SearchCursor to loop through multiple fields, in a dbf file that contain names of fields, that are thought to be within each shapefile. I stripped out rows that do not contain any text. Below is the output when I print the lists of field names thought to be within the shapefile.
<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'HOUSE_NUMB'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'HALF_ADDRE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'PREFIX_DIR'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STREET_NAM'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STREET_TYP'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SUFFIX_DIR'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'UNIT_TYPE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'UNIT_ID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">' BUILDINGA'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STREET_ADD'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'CITY'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'STATE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ZIPCODE'</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'HSE_NUMB'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">' PRETYPEA'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'FULL_STREE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SUB_ADD_TY'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SUB_ADD_ID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ZIPCODE'</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="string token">' TYPEA'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'OBJECTID'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ADRSNUM'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'P_ROADNME'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ROADNME'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'S_ROADNME'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ADRSNUM_S'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ADDRESS'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'COMMUNITY'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'ZIP'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
My goal with this script is to compare the lists of field names though to be within the shapefile (possible fields) to the lists of field names actually found within the shapefile (actual fields). For each comparison of lists, I want to capture the text of field names that are found and field names that are not found. I would like to use arcpy.da.UpdateCursor to fill two new fields, one field will hold the field names that are found and one will hold the field names that are not found. I am using a dbf table to control processing and it holds all field names thought to be within the shapefile and file paths to shapefiles and I want to write results to this dbf table as well. All of the examples that I have seen compare a single shapefile that is defined against one defined list. I am wondering if it's possible to compare multiple lists with multiple lists using ArcPy functions.
Below is a pic of my dbf table and I'm using ArcGIS Pro.

I assume that I need to do some list processing and get the difference or intersection of lists, but I cant wrap my head around the code logic. I'm new to the python language so any help to point me in the right direction would be greatly appreciated.