Completed
Push — master ( c396a1...0e306d )
by Fabio
03:31
created

benedict.core.invert._invert_item()   A

Complexity

Conditions 2

Size

Total Lines 5
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

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