示例#1
0
文件: util.py 项目: wilbrodn/aleph
def remove_nulls(data):
    """Remove None-valued keys from a dictionary, recursively."""
    if isinstance(data, dict):
        for k, v in data.items():
            if v is None:
                data.pop(k)
            data[k] = remove_nulls(v)
    elif is_list(data):
        data = [remove_nulls(d) for d in data if d is not None]
    return data
示例#2
0
文件: util.py 项目: wilbrodn/aleph
def merge_docs(old, new):
    """Exend the values of the new doc with extra values from the old."""
    old = remove_nulls(old)
    new = dict(remove_nulls(new))
    for k, v in old.items():
        if k in new:
            if is_list(v):
                v = new[k] + v
                new[k] = unique_list(v)
            elif isinstance(v, dict):
                new[k] = merge_docs(v, new[k])
        else:
            new[k] = v
    return new