perf: faster and more readable merge_dicts (#1775)

Co-authored-by: Roelof van Dijk <[email protected]>
This commit is contained in:
Roelof van Dijk
2023-09-05 14:42:19 -07:00
committed by GitHub
co-authored by Roelof van Dijk
parent 89a8a02697
commit 2a11669e1d
+2 -3
View File
@@ -19,9 +19,8 @@ def flatten(l:Iterator): return [item for sublist in l for item in sublist]
def fromimport(mod, frm): return getattr(__import__(mod, fromlist=[frm]), frm)
def strip_parens(fst): return fst[1:-1] if fst[0] == '(' and fst[-1] == ')' and fst[1:-1].find('(') <= fst[1:-1].find(')') else fst
def merge_dicts(ds:Iterable[Dict]) -> Dict:
kvs = set([(k,v) for d in ds for k,v in d.items()])
assert len(kvs) == len(set(kv[0] for kv in kvs)), f"cannot merge, {kvs} contains different values for the same key"
return {k:v for k,v in kvs}
assert len(kvs:=set([(k,v) for d in ds for k,v in d.items()])) == len(set(kv[0] for kv in kvs)), f"cannot merge, {kvs} contains different values for the same key"
return {k:v for d in ds for k,v in d.items()}
def partition(lst, fxn):
a: list[Any] = []
b: list[Any] = []