From 06e74cf44f1224f7ea331a2926374942bf58148f Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Tue, 19 Dec 2017 12:43:31 -0800 Subject: [PATCH] Convert list to dictionary in _getBuildingNameById (#651) Speeds up subsequent access by not having to step through list each time --- src/gam.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/gam.py b/src/gam.py index 1b20cb97..9ab8e59d 100755 --- a/src/gam.py +++ b/src/gam.py @@ -8011,13 +8011,15 @@ def _getBuildingByNameOrId(cd, which_building): sys.exit(3) def _getBuildingNameById(cd, buildingId): - if not GM_Globals[GM_MAP_BUILDING_ID_TO_NAME]: - fields = u'nextPageToken,buildings(buildingId,buildingName)' - GM_Globals[GM_MAP_BUILDING_ID_TO_NAME] = callGAPIpages(cd.resources().buildings(), u'list', u'buildings', - customer=GC_Values[GC_CUSTOMER_ID], fields=fields) - for building in GM_Globals[GM_MAP_BUILDING_ID_TO_NAME]: - if buildingId == building[u'buildingId']: - return building[u'buildingName'] + if GM_Globals[GM_MAP_BUILDING_ID_TO_NAME] is None: + buildings = callGAPIpages(cd.resources().buildings(), u'list', u'buildings', + customer=GC_Values[GC_CUSTOMER_ID], + fields=u'nextPageToken,buildings(buildingId,buildingName)') + GM_Globals[GM_MAP_BUILDING_ID_TO_NAME] = {} + for building in buildings: + GM_Globals[GM_MAP_BUILDING_ID_TO_NAME][building[u'buildingId']] = building[u'buildingName'] + if buildingId in GM_Globals[GM_MAP_BUILDING_ID_TO_NAME]: + return GM_Globals[GM_MAP_BUILDING_ID_TO_NAME][buildingId] print u'ERROR: No such building %s' % buildingId sys.exit(3)