<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def component_by_tags(self, tags):
 """Retrieve components by tags. :param tags: List of tags :type tags: list :return: List of ReportComponentsMetadata :rtype: list[ReportComponentsMetadata] .. versionadded:: 4.0 """

        tags_keys = [t['key'] for t in tags]
        filtered = [
            c for c in self.components
            if set(tags_keys).issubset([ct['key'] for ct in c.tags])]
        return filtered