вы можете избавиться от многих бесполезных (выброшенных) операций объединения, если подготовите свой особый запрос: просто разделите значения или ключи, в зависимости от того, что вы сравниваете.Это предполагает, конечно, что dict меньше, чем количество всех комбо.
Если вам нужно объединение, вы должны немного изменить это.Я думаю без того, чтобы вы были более описательными, проблема не лучше, чем эта.И это не будет намного быстрее, просто используя другой язык.
(filtered_combo for filtered_combo in
itertools.chain.from_iterable(
combo for combo in (itertools.permutations(bag, x)
for x in xrange(max_combo_len, 0, -1)))
if filtered_combo in special_dict)