21 lines
518 B
Python
21 lines
518 B
Python
def first_or_none(predicate, lst):
|
|
return next((x for x in lst if predicate(x)), None)
|
|
|
|
|
|
def deep_merge(source, destination: dict):
|
|
"""
|
|
Merge source dict into destination dict recursively.
|
|
"""
|
|
|
|
def _deep_merge(a, b):
|
|
for key, value in a.items():
|
|
if isinstance(value, dict):
|
|
node = b.setdefault(key, {})
|
|
_deep_merge(value, node)
|
|
else:
|
|
b[key] = value
|
|
|
|
return b
|
|
|
|
return _deep_merge(source, dict(destination))
|