@staticmethod
def filter_list_dict_by_dict(list_dict, filter_dict):
    """
        Filter list of dict by filter_dict.
        :param list_dict:
        :param filter_dict:
        :return: Return list of dict match filter_dict
        Ex: list_dict=[{'id': 1, 'v': 11},
                       {'id': 1, 'v': 111},
                       {'id': 2, 'v': 22},
                       {'id': 3, 'v': 33}]
        Case1:
             filter_dict={'id': 1, 'v': 11}
          => return [{'id': 1, 'v': 11}]

        Case2:
             filter_dict={'id': 1}
          => return [{'id': 1, 'v': 11}, {'id': 1, 'v': 111}]
        """
    result_list = []
    for item in list_dict:
        count_match = len(filter_dict.keys())
        count_check = 0
        if set(filter_dict.keys()).issubset(set(item.keys())):
            for k, v in filter_dict.items():
                if v == item[k]:
                    count_check += 1
        if count_check == count_match:
            result_list.append(item)
        else:
            continue
    return result_list
