@staticmethod
def get_value_from_nested_dict(data_dict, map_str, separator='.'):
    """
            Get value from nested dict
        :param data_dict:
        :param map_str: key1.key2.key3
        :param separator: for split map string of path. Default: '.'
        :return:
        Ex: list_dict={{'id1': {'value':'1'}},
                       {'id2': {'value':'2'}},
                       {'id3': {'value':'3'}}
             map_str='id1.value'
          => return '1'
        """
    map_list = str(map_str).split(separator)
    pointer = data_dict
    value = None
    try:
        for ind in range(len(map_list)):
            key = map_list[ind]
            if isinstance(pointer, list):
                if ind == len(map_list) - 1:
                    value = pointer[int(key[1:-1])]
                    return value
                pointer = pointer[int(key[1:-1])]
            elif ind == len(map_list) - 1:
                value = pointer[key]
                return value
            elif key in pointer:
                pointer = pointer[key]
        return value
    except (KeyError, TypeError, IndexError):
        return None
