Showing
1 changed file
with
15 additions
and
5 deletions
| 1 | 1 | # -*- coding: utf-8 - |
| 2 | +from copy import deepcopy | |
| 2 | 3 | from datetime import timedelta |
| 3 | 4 | from dateutil.parser import parse |
| 4 | 5 | from dpath.util import new as xpathnew |
| ... | ... | @@ -246,11 +247,20 @@ def wait_to_date(date_stamp): |
| 246 | 247 | return wait_seconds |
| 247 | 248 | |
| 248 | 249 | |
| 249 | -def merge_dicts(left, right): | |
| 250 | - new = {} | |
| 251 | - new.update(left) | |
| 252 | - new.update(right) | |
| 253 | - return new | |
| 250 | +def merge_dicts(a, b): | |
| 251 | + """Merge dicts recursively. | |
| 252 | + | |
| 253 | + Origin: https://www.xormedia.com/recursively-merge-dictionaries-in-python/ | |
| 254 | + """ | |
| 255 | + if not isinstance(b, dict): | |
| 256 | + return b | |
| 257 | + result = deepcopy(a) | |
| 258 | + for k, v in b.iteritems(): | |
| 259 | + if k in result and isinstance(result[k], dict): | |
| 260 | + result[k] = merge_dicts(result[k], v) | |
| 261 | + else: | |
| 262 | + result[k] = deepcopy(v) | |
| 263 | + return munchify(result) | |
| 254 | 264 | |
| 255 | 265 | |
| 256 | 266 | def create_data_dict(path_to_value=None, value=None): | ... | ... |
Please
register
or
login
to post a comment