From 80513b808d498d7944f1af0661886c4e4aae3e36 Mon Sep 17 00:00:00 2001 From: leufen1 <l.leufen@fz-juelich.de> Date: Tue, 1 Dec 2020 14:43:38 +0100 Subject: [PATCH] new helper to extract subset of dictionary indicated by key --- mlair/helpers/__init__.py | 2 +- mlair/helpers/helpers.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/mlair/helpers/__init__.py b/mlair/helpers/__init__.py index 9e2f612c..4671334c 100644 --- a/mlair/helpers/__init__.py +++ b/mlair/helpers/__init__.py @@ -3,4 +3,4 @@ from .testing import PyTestRegex, PyTestAllEqual from .time_tracking import TimeTracking, TimeTrackingWrapper from .logger import Logger -from .helpers import remove_items, float_round, dict_to_xarray, to_list, extract_value +from .helpers import remove_items, float_round, dict_to_xarray, to_list, extract_value, select_from_dict diff --git a/mlair/helpers/helpers.py b/mlair/helpers/helpers.py index 3ecf1f62..36470ebc 100644 --- a/mlair/helpers/helpers.py +++ b/mlair/helpers/helpers.py @@ -99,6 +99,19 @@ def remove_items(obj: Union[List, Dict], items: Any): raise TypeError(f"{inspect.stack()[0][3]} does not support type {type(obj)}.") +def select_from_dict(dict_obj: dict, sel_list: str): + """ + Extract all key values pairs whose key is contained in the sel_list. + + Does not perform a check if all elements of sel_list are keys of dict_obj. Therefore the number of pairs in the + returned dict is always smaller or equal to the number of elements in the sel_list. + """ + sel_list = to_list(sel_list) + assert isinstance(dict_obj, dict) + sel_dict = {k: v for k, v in dict_obj.items() if k in sel_list} + return sel_dict + + def extract_value(encapsulated_value): try: return extract_value(encapsulated_value[0]) -- GitLab