From cf827783e14816737d1a1223ce48dfd640fba05b Mon Sep 17 00:00:00 2001
From: "manuela.richter" <manuela.richter@tu-darmstadt.de>
Date: Fri, 6 May 2022 10:16:52 +0200
Subject: [PATCH] added recursive function for finding values in nested
 dictionaries

---
 trial_json.py | 40 +++++++++++++++++++++++++++++++++++++---
 1 file changed, 37 insertions(+), 3 deletions(-)

diff --git a/trial_json.py b/trial_json.py
index d28a695..cd55693 100644
--- a/trial_json.py
+++ b/trial_json.py
@@ -7,13 +7,43 @@ Created on Thu May  5 17:27:38 2022
 testfile for operating with json-files
 
 """
-
+#%% import moduls
 import json
 
+#%% define functions
+def findkeys(node, kv):
+    '''
+    https://stackoverflow.com/questions/9807634/find-all-occurrences-of-a-key-in-nested-dictionaries-and-lists 
+
+    Parameters
+    ----------
+    node : TYPE
+        DESCRIPTION.
+    kv : TYPE
+        DESCRIPTION.
+
+    Yields
+    ------
+    TYPE
+        DESCRIPTION.
+
+    '''
+    if isinstance(node, list):
+        for i in node:
+            for x in findkeys(i, kv):
+               yield x
+    elif isinstance(node, dict):
+        if kv in node:
+            yield node[kv]
+        for j in node.values():
+            for x in findkeys(j, kv):
+                yield x
+                
+#%% main script
 with open("test_data.json","r+") as file:
     data = json.load(file)
-    print(len(data))
-    print(type(data))
+    #print(len(data))
+    #print(type(data))
     
 #print(data["Name"])
 
@@ -32,3 +62,7 @@ for i in a:
         print(type(attrs))
         print(attrs)
         print(j)
+
+
+
+print(list(findkeys(data, 'KPI')))
\ No newline at end of file
-- 
GitLab