actions = {'a1', 'a2', 'a3'}
informations = {'i1', 'i2', 'i3'}
p = argparse.ArgumentParser()
for ai in (actions + informations):
    p.add_argument('--' + ai, action='append_const', const=ai, dest=infoactions
        )
args = p.parse_args()
if not args.infoactions:
    p.error('At least one action or information required')
elif len(actions.intersection(args.infoactions)) > 1:
    p.error('At most one action allowed')
argparse: some mutually exclusive arguments in required group