55def check_for_duplicate_keys (pairs : list [tuple [str , Any ]]) -> dict :
66 keys = {}
77 dupes = {}
8+
89 for key , value in pairs :
910 print (f"Processing key: { key } , value: { value } " )
1011 if key in keys :
11- if key not in dupes :
12- dupes [key ] = []
13- dupes [key ].append (value )
14- continue
15- keys [key ] = value
12+ dupes .setdefault (key , []).append (value )
13+ else :
14+ keys [key ] = value
1615
1716 if dupes :
1817 keys ["__duplicates__" ] = dupes
@@ -22,14 +21,16 @@ def check_for_duplicate_keys(pairs: list[tuple[str, Any]]) -> dict:
2221
2322def flatten_duplicates (data : dict | list ) -> list [str ]:
2423 duplicates = []
25- for key , value in data .items () if isinstance (data , dict ) else enumerate (data ):
24+ items = data .items () if isinstance (data , dict ) else enumerate (data )
25+
26+ for key , value in items :
2627 if key == "__duplicates__" :
27- duplicates .extend ([f"{ dupe_key } " for dupe_key in value .keys ()])
28- continue
29- if isinstance (value , (dict , list )):
30- dupes = flatten_duplicates (value )
28+ duplicates .extend (value .keys ())
29+ elif isinstance (value , (dict , list )):
3130 path = f"{ key } " if isinstance (data , dict ) else f"[{ key } ]"
31+ dupes = flatten_duplicates (value )
3232 duplicates .extend ([f"{ path } .{ dupe } " for dupe in dupes ])
33+
3334 print (f"flatten_duplicates data={ data } dupes={ duplicates } " )
3435 return duplicates
3536
0 commit comments