def produce_similarity_sets(list_of_lists): list_of_sets = list_of_lists_to_list_of_sets(list_of_lists) for pair_of_sets in make_pairs_of_sets(list_of_sets): if check_similarity_of_sets(pair_of_sets, list_of_sets): new = collapse_pair_of_sets(pair_of_sets) list_of_sets.append(new) return list_of_sets
def test_list_of_lists_to_list_of_sets(): input_lists = [['a', 'b'], ['b', 'c']] result = list_of_lists_to_list_of_sets(input_lists) assert isinstance(result, list), 'result is not a list' for item in result: assert isinstance(item, set), '{} is not a set'.format(item) assert set('ab') in result, 'first set not found'
def test_list_of_lists_to_list_of_sets(self): input_lists = [['a', 'b'], ['b', 'c']] result = list_of_lists_to_list_of_sets(input_lists) self.assertIsInstance(result, list, "result is not a list") for item in result: self.assertIsInstance(item, set, "{} is not a set".format(item)) self.assertIn(set('ab'), result, "first set not found")
def intersection_of_list_of_lists(list_of_lists): tmp = list_of_lists_to_list_of_sets(list_of_lists) return list(intersection_of_list_of_sets(tmp))
def difference_of_lists(base_list, list_of_other_lists): list_of_other_sets = list_of_lists_to_list_of_sets(list_of_other_lists) return list(difference_of_sets(set(base_list), list_of_other_sets))