sábado, 24 de outubro de 2009

Problema 4.12

Vamos inverter um dicionário, trocando as chaves pelos valores e vice versa. Que questão bizarra podemos ter que resolver? O facto de chaves diferentes poderem ter valores iguais no dicionário inicial! Vejamos como o problema foi ultrapassado.


def inverte(dicio):
"""inverte um dicionario, i.e., as chaves passa a ser os valores e os
valores as chaves
"""
aux = {}
for key,value in dicio.items():
if not aux.has_key(value):
aux[value] = []
aux[value].append(key)
return aux



Como se pode ver, cá reaparece o velho padrão: varrer o dicionários pelos seus elementos, e ir adicionando por etapas os elementos relevantes a um acumulador (aux). Como podemos ter agora diferentes valores para uma mesma chave, esse facto resolve-se colocando no campo valor uma lista. O teste if serve para distinguir os casos em que não existe ainda nenhum valor, das situações em que já há algo.

Sem comentários:

Enviar um comentário