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
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.