items = {'fruits': ('Orange', 'Apple'), 'toys': ('GI-Joe',), 'electronics':
    ('VCR',), 'sporting_goods': ('Racquet',)}

def combinate(items, size=3):
    if size > len(items):
        raise Exception('Lower the `size` or add more products, dude!')
for cats in itertools.combinations(list(items.keys()), size):
    cat_items = [[products for products in items[cat]] for cat in cats]
for x in itertools.product(*cat_items):
    yield zip(cats, x)
if __name__ == '__main__':
    for x in combinate(items):
        pass
Creating restricted permutations of a list of items by category