A minha solucao ficou um pouco dificil de entender(eu achei). Tentei explicar, mas nao sei se ficou muito claro. Mas fiz o meu melhor. Obrigado pela aula
funcionarios = [('SP', 16), ('ES', 8), ('MG', 9), ('MG', 6), ('SP', 10), ('MG', 4), ('ES',9), ('ES', 7), ('ES', 12), ('SP', 7), ('SP', 11), ('MG',8), ('ES',8), ('SP',9), ('RJ', 13), ('MG', 5), ('RJ', 9), ('SP', 12), ('MG', 10), ('SP', 7), ('ES', 14), ('SP', 10), ('MG', 12)]
#Retorna so estados de cada tupla e depois usa-se a estrutura dados set para remover os valores repetitivos
estados = [uf[0] for uf in funcionarios]
estados_unicos = list(set(estados))
qt_fucionarios = {}
soma_funcionarios = {}
for estado in estados_unicos:
'''
#Para cada valor estado da lista estados_unicos, aplica-se uma funcao map,
onde o valor do iteravel dessa funcao é resultado de uma funcao filter. A funçao
filter irá filtrar as tuplas na posicao zero que tenha valor igual a variavel estado.
Retornando uma lista de tuplas com valores referentes a cada estado
'''
qt_fucionarios[estado] = list(map( lambda x: x[1], list(filter( lambda y: y[0] == estado, funcionarios))))
#Irá somar os valores de cada chave (os estados) e suas listas de valores (qt_funcionarios)
soma_funcionarios[estado] = sum(qt_fucionarios[estado])
print(qt_fucionarios)
print(soma_funcionarios)