- commit
- a7fa218d50fd203bf7ba9b9db438442b91a55fdb
- parent
- a2c3c180bd2547bfdd32e2cb21828d432feefeb3
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2015-05-08 17:48
merge on intersection, not equality
Diffstat
| M | cctool.py | 17 | +++++++---------- |
1 files changed, 7 insertions, 10 deletions
diff --git a/cctool.py b/cctool.py
@@ -162,18 +162,15 @@ class MultiDict(OrderedDict): 162 162 163 163 def merged(data, key): 164 164 """Outer join `data` on `key`."""165 -1 tmp = dict()166 -1 missing = []-1 165 tmp = list() 167 166 for entry in data:168 -1 if key in entry:169 -1 tmp_key = str(entry[key])170 -1 if tmp_key in tmp:171 -1 tmp[tmp_key].update(entry)172 -1 else:173 -1 tmp[tmp_key] = entry-1 167 for other in tmp: -1 168 if not set(entry[key]).isdisjoint(other[key]): -1 169 other.update(entry) -1 170 break 174 171 else:175 -1 missing.append(entry)176 -1 return list(tmp.values()) + missing-1 172 tmp.append(entry) -1 173 return tmp 177 174 178 175 179 176 def map_keys(mdict, _map, reverse=False, exclusive=True):