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