Introdução
Dicionários são uma estrutura de dados fundamental em Python que permite armazenar pares chave-valor. Às vezes, pode ser necessário inverter um dicionário, o que significa trocar as chaves e os valores, de modo que os valores se tornem as chaves e as chaves se tornem os valores. Neste desafio, você terá a tarefa de escrever uma função que inverte um dicionário com valores hashable não únicos.
Inverter um Dicionário
Escreva uma função invert_dictionary(obj) que recebe um dicionário obj como entrada e retorna um novo dicionário com as chaves e os valores invertidos. O dicionário de entrada terá valores hashable não únicos. Se duas ou mais chaves tiverem o mesmo valor, a função deve anexar as chaves a uma lista no dicionário de saída.
Para resolver este problema, você pode seguir estes passos:
- Crie um
collections.defaultdictcomlistcomo o valor padrão para cada chave. - Use
dictionary.items()em combinação com um loop para mapear os valores do dicionário para chaves usandodict.append(). - Use
dict()para converter ocollections.defaultdictem um dicionário regular.
Assinatura da função: def invert_dictionary(obj: dict) -> dict:
from collections import defaultdict
def collect_dictionary(obj):
inv_obj = defaultdict(list)
for key, value in obj.items():
inv_obj[value].append(key)
return dict(inv_obj)
ages = {
'Peter': 10,
'Isabel': 10,
'Anna': 9,
}
collect_dictionary(ages) ## { 10: ['Peter', 'Isabel'], 9: ['Anna'] }
Resumo
Neste desafio, você aprendeu como inverter um dicionário com valores hashable não únicos. Você usou um collections.defaultdict com list como o valor padrão para cada chave e, em seguida, mapeou os valores do dicionário para chaves usando dict.append(). Finalmente, você usou dict() para converter o collections.defaultdict em um dicionário regular.