Compartilho minhas soluções e comentários sobre esse praticando, que confesso exigiu bem de mim.
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)]
funcionarios
#{chave: valor for item in lista}
#pegar os estados unicos primeiro
est_unicos={estado for estado, fun in funcionarios}
# forçando um dic tem-se que vai pear os estado unicos na parte do valo criar
# uma lista com o valor do funcionario de acordo com os estados unicos.
unicos ={est_unicos:[fun for (est, fun) in funcionarios if est==est_unicos]
for est_unicos in est_unicos }
unicos
#est_unicos
# Cria um novo dicionário chamado 'soma_estados'
soma_estados = {
# Para cada par (estado, colaboradores) no dicionário 'unicos' (que contém listas de funcionários por estado):
estado: sum(colaboradores) # A chave será o 'estado' e o valor será a soma dos 'colaboradores' dessa lista.
for estado, colaboradores in unicos.items()
}
soma_estados