From 494bc38203d233323804fb7be1d81a0ad35e6eca Mon Sep 17 00:00:00 2001 From: snowman2 Date: Sat, 4 Jun 2022 20:50:50 -0500 Subject: [PATCH] REF: use dict comprehension instead of map to process PROJ strings --- pyproj/crs/crs.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/pyproj/crs/crs.py b/pyproj/crs/crs.py index 6bda8eff1..403e8c862 100644 --- a/pyproj/crs/crs.py +++ b/pyproj/crs/crs.py @@ -573,7 +573,11 @@ def to_dict(self) -> dict: """ - def parse(val): + proj_string = self.to_proj4() + if proj_string is None: + return {} + + def _parse(val): if val.lower() == "true": return True if val.lower() == "false": @@ -588,16 +592,13 @@ def parse(val): pass return _try_list_if_string(val) - proj_string = self.to_proj4() - if proj_string is None: - return {} - - items = map( - lambda kv: len(kv) == 2 and (kv[0], parse(kv[1])) or (kv[0], None), - (part.lstrip("+").split("=", 1) for part in proj_string.strip().split()), - ) + def _process_step(step): + step_parts = step.lstrip("+").split("=", maxsplit=1) + if len(step_parts) == 2: + return step_parts[0], _parse(step_parts[1]) + return step_parts[0], None - return {key: value for key, value in items if value is not False} + return dict(_process_step(step) for step in proj_string.strip().split()) def to_cf( self,