Exemplo n.º 1
0
def invert(d, flat=False):
    new_dict = clone(d, empty=True)
    for key, value in d.items():
        if type_util.is_list_or_tuple(value):
            _invert_list(new_dict, key, value, flat)
        else:
            _invert_item(new_dict, key, value, flat)
    return new_dict
Exemplo n.º 2
0
def unflatten(d, separator='_'):
    new_dict = clone(d, empty=True)
    keys = list(d.keys())
    for key in keys:
        value = d.get(key, None)
        new_keys, new_value = _unflatten_item(key, value, separator)
        keylist_util.set_item(new_dict, new_keys, new_value)
    return new_dict
Exemplo n.º 3
0
def filter(d, predicate):
    if not callable(predicate):
        raise ValueError('predicate argument must be a callable.')
    new_dict = clone(d, empty=True)
    keys = list(d.keys())
    for key in keys:
        value = d.get(key, None)
        if predicate(key, value):
            new_dict[key] = value
    return new_dict
Exemplo n.º 4
0
def flatten(d, separator='_'):
    new_dict = clone(d, empty=True)
    return _flatten_item(d,
                         base_dict=new_dict,
                         base_key='',
                         separator=separator)