Captura de grupos con nombre en expresiones regulares con re.findall

Cuando estaba tratando de responder esta pregunta:regex para dividir% edades y valores en python Noté que tenía que reordenar los grupos a partir del resultado de Findall. Por ejemplo:

data = """34% passed 23% failed 46% deferred"""
result = {key:value for value, key in re.findall('(\w+)%\s(\w+)', data)}
print(result)
>>> {'failed': '23', 'passed': '34', 'deferred': '46'}

Aquí el resultado del findall es:

>>> re.findall('(\w+)%\s(\w+)', data)
>>> [('34', 'passed'), ('23', 'failed'), ('46', 'deferred')]

¿Hay alguna manera de cambiar / especificar el orden de los grupos que hacere.findall return:

[('passed', '34'), ('failed', '23'), ('deferred', '46')]

Solo para aclarar, la pregunta es:

¿Es posible especificar el orden o reordenar los grupos para el retorno de la función re.findall?

Usé el ejemplo anterior para crear un diccionario para proporcionar una razón / caso de uso para cuando desee cambiar el orden (haciendo clave como valor y valor como clave)

Más aclaraciones:

Para manejar grupos en expresiones regulares más grandes y complicadas, puede nombrar grupos, pero esos nombres solo son accesibles cuando realiza una re.search pr re.match. Por lo que he leído, Findall tiene índices fijos para los grupos devueltos en la tupla. La pregunta es si alguien sabe cómo podrían modificarse esos índices. Esto ayudaría a que el manejo de grupos sea más fácil e intuitivo.

Respuestas a la pregunta(3)

Su respuesta a la pregunta