'Get an item from a dictionary with key notation a.b.c
d = {\'a\': {\'b\': \'c\'}}}
key = a#b
return c'

@staticmethod
def add_entry(data, key, item=None, sep='.'):

    if (key == ''):
        pass
    elif ((not (key and Yedit.valid_key(key, sep))) and isinstance(data, (list, dict))):
        return None
    key_indexes = Yedit.parse_key(key, sep)
    for (arr_ind, dict_key) in key_indexes[:(-1)]:
        if dict_key:
            if (isinstance(data, dict) and (dict_key in data) and data[dict_key]):
                data = data[dict_key]
                continue
            elif (data and (not isinstance(data, dict))):
                raise YeditException(('Unexpected    item    type    found    while    going    through    key    ' + 'path:    {}    (at    key:    {})'.format(key, dict_key)))
            data[dict_key] = {}
            data = data[dict_key]
        elif (arr_ind and isinstance(data, list) and (int(arr_ind) <= (len(data) - 1))):
            data = data[int(arr_ind)]
        else:
            raise YeditException('Unexpected    item    type    found    while    going    through    key    path:    {}'.format(key))
    if (key == ''):
        data = item
    elif (key_indexes[(-1)][0] and isinstance(data, list) and (int(key_indexes[(-1)][0]) <= (len(data) - 1))):
        data[int(key_indexes[(-1)][0])] = item
    elif (key_indexes[(-1)][1] and isinstance(data, dict)):
        data[key_indexes[(-1)][1]] = item
    else:
        raise YeditException('Error    adding    to    object    at    path:    {}'.format(key))
    return data
