Beispiel #1
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
Beispiel #2
0
def unflatten(d, separator='_'):
    new_dict = d.copy()
    new_dict.clear()
    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
 def _setitem_by_keys(self, keys, value):
     keylist_util.set_item(self, keys, value)
Beispiel #4
0
    def test_set_item_with_indexes(self):
        d = {}

        keylist_util.set_item(d, 'a', None)
        self.assertEqual(d, {'a': None})

        keylist_util.set_item(d, ['a', 'b', 'c'], 0)
        self.assertEqual(d, {'a': {'b': {'c': 0}}})

        keylist_util.set_item(d, ['a', 'b', 'd'], 1)
        self.assertEqual(d, {'a': {'b': {'c': 0, 'd': 1}}})

        keylist_util.set_item(d, ['a', 'b', 'e', 0], 1)
        keylist_util.set_item(d, ['a', 'b', 'e', 1], 2)
        keylist_util.set_item(d, ['a', 'b', 'e', 2], 3)
        self.assertEqual(d, {'a': {'b': {'c': 0, 'd': 1, 'e': [1, 2, 3]}}})

        keylist_util.set_item(d, ['a', 'b', 'e', 0], 4)
        keylist_util.set_item(d, ['a', 'b', 'e', 1], 5)
        keylist_util.set_item(d, ['a', 'b', 'e', 2], 6)
        # keylist_util.set_item(d, ['a', 'b', 'e', 3], 7)
        # keylist_util.set_item(d, ['a', 'b', 'e', 4], 8)
        keylist_util.set_item(d, ['a', 'b', 'e', 5], 9)
        self.assertEqual(
            d, {'a': {
                'b': {
                    'c': 0,
                    'd': 1,
                    'e': [4, 5, 6, None, None, 9]
                }
            }})
        keylist_util.set_item(d, ['a', 'b', 'e', -11], 10)
        self.assertEqual(
            d,
            {'a': {
                'b': {
                    'c': 0,
                    'd': 1,
                    'e': [10, 4, 5, 6, None, None, 9]
                }
            }})