keyField = "OBJECTID" valueField = "DIFFERENT_ID" exampleDict = dict([(searchRow.getValue(keyField), searchRow.getValue(valueField)) for searchRow in arcpy.SearchCursor(myTable)])
How about just leaving the field values (aka the dictionary values) as a tuple?
def makeFeatureDict(myFC, keyField, fields): return {r[0]:r[1:] for r in arcpy.da.SearchCursor(myFC, [keyField] + fields)}
def makeFeatureDict(myFC, keyField, fields): cursorFields = [keyField] + fields valueDict = {r[0]:r[1:] for r in arcpy.da.SearchCursor(myFC, cursorFields)} del cursorFields return valueDict
Update: Dictionary comprehensions now suported in Python 2.7, so an updated syntax would look like:valueDict = {r[0]:(r[1],r[2]) for r in arcpy.da.SearchCursor(myFC, ["OID@","ID","NAME"])}
valueDict = {r[0]:(r[1],r[2]) for r in arcpy.da.SearchCursor(myFC, ["OID@","ID","NAME"])}
def makeFeatureDict(myFC, keyField, fields): cursorFields = [keyField] + fields valueDict = {r[0]:[v for v in r[1:]] for r in arcpy.da.SearchCursor(myFC, cursorFields)} del cursorFields return valueDict
or better yet...exampleDict = dict([(r.KEY, (r.VALUE1, r.VALUE2)) for r in arcpy.SearchCursor(myTbl)])
exampleDict = dict([(r.KEY, (r.VALUE1, r.VALUE2)) for r in arcpy.SearchCursor(myTbl)])
# for this example, use the Census 2000 state shapefile myShp = 'R:\\data\\Census\\2000\\Shape\\ST.shp' myDict = dict([((r.ST_ABBREV, f.name), r.getValue(f.name)) for f in ap.ListFields(myShp) for r in ap.SearchCursor(myShp)]) >>> myDict[('WY', 'STATE_NAME')] >>> 'Wyoming' >>> myDict[('MD', 'ID')] >>> '24' #this is the FIPS code for Maryland
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.