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