From 880db3735689b7cc0b7bb0b826b8acd4bf02dcc2 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Wed, 6 Dec 2023 09:01:00 +0100 Subject: [PATCH] flatten_dict_lists(): Don't flatten lists with duplicate keys If we have a list of dicts, and we flatten that into a dict: Only do that if there are no dicts with duplocate key values in the list, as otherwise we will loose information during the transformation. Change-Id: I7f6d03bf323a153f3172853a3ef171cbec8aece7 Closes: OS#6288 --- pySim/tlv.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pySim/tlv.py b/pySim/tlv.py index 7f205593..1ecc8066 100644 --- a/pySim/tlv.py +++ b/pySim/tlv.py @@ -435,8 +435,12 @@ def flatten_dict_lists(inp): return False return True + def are_elements_unique(lod): + set_of_keys = set([list(x.keys())[0] for x in lod]) + return len(lod) == len(set_of_keys) + if isinstance(inp, list): - if are_all_elements_dict(inp): + if are_all_elements_dict(inp) and are_elements_unique(inp): # flatten into one shared dict newdict = {} for e in inp: