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.

01.def inverte(dicio):
02. """inverte um dicionario, i.e., as chaves passa a ser os valores e os
03. valores as chaves
04. """
05. aux = {}                          
06. for key,value in dicio.items():
07.  if not aux.has_key(value):
08.   aux[value] = []           
09.  aux[value].append(key)
10. 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