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
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.