benedict.core.invert._invert_list()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 2
nop 4
1
from benedict.core import clone
2
from benedict.utils import type_util
3
4
5
def _invert_item(d, key, value, flat):
6
    if flat:
7
        d.setdefault(value, key)
8
    else:
9
        d.setdefault(value, []).append(key)
10
11
12
def _invert_list(d, key, value, flat):
13
    for value_item in value:
14
        _invert_item(d, key, value_item, flat)
15
16
17
def invert(d, flat=False):
18
    new_dict = clone(d, empty=True)
19
    for key, value in d.items():
20
        if type_util.is_list_or_tuple(value):
21
            _invert_list(new_dict, key, value, flat)
22
        else:
23
            _invert_item(new_dict, key, value, flat)
24
    return new_dict
25