A **compreensão de dicionários** em [[Linguagem de programação Python|Python]] é uma forma concisa e eficiente de criar dicionários. Assim como as [[Compreensão de listas em Python|compreensões de lista]], ela permite construir um novo dicionário aplicando uma expressão a cada item de um iterável, opcionalmente filtrando os itens com uma condição. # Sintaxe Básica A sintaxe de uma compreensão de dicionários é semelhante à de listas, mas utiliza chaves `{}` e especifica pares `chave: valor`: ```python novo_dicionario = {chave_expressao: valor_expressao for item in iteravel if condicao} ``` Onde: - `chave_expressao`: A expressão que define a chave para cada item no novo dicionário. - `valor_expressao`: A expressão que define o valor para cada item no novo dicionário. - `item`: A variável que representa cada elemento do iterável. - `iteravel`: A coleção de elementos sobre a qual iterar. - `condicao` (opcional): Um filtro para incluir apenas os itens que satisfazem a condição. # Exemplos **1. Criando um dicionário a partir de uma lista de tuplas:** Este é um caso comum onde você tem uma lista de pares (como tuplas) e deseja transformá-los em um dicionário. ```python dial_codes = [ (880, 'Bangladesh'), (55, 'Brazil'), (86, 'China'), (91, 'India'), (62, 'Indonesia'), (81, 'Japan'), (234, 'Nigeria'), (92, 'Pakistan'), (7, 'Russia'), (1, 'United States'), ] # Criando um dicionário onde a chave é o nome do país e o valor é o código de discagem country_dial = {country: code for code, country in dial_codes} print(country_dial) # Saída: {'Bangladesh': 880, 'Brazil': 55, 'China': 86, 'India': 91, 'Indonesia': 62, 'Japan': 81, 'Nigeria': 234, 'Pakistan': 92, 'Russia': 7, 'United States': 1} ``` Neste exemplo, `code, country` utiliza o [[Desempacotar sequencias em Python|desempacotamento de tuplas]] para atribuir os elementos de cada tupla nas variáveis `code` e `country` durante a iteração. **2. Criando um dicionário a partir de uma lista, com transformação e filtro:** ```python numeros = [1, 2, 3, 4, 5, 6] # Criar um dicionário onde a chave é o número e o valor é o seu quadrado, # mas apenas para números pares. quadrados_pares = {num: num**2 for num in numeros if num % 2 == 0} print(quadrados_pares) # Saída: {2: 4, 4: 16, 6: 36} ``` **3. Invertendo um dicionário:** ```python dicionario_original = {'a': 1, 'b': 2, 'c': 3} # Invertendo chaves e valores dicionario_invertido = {valor: chave for chave, valor in dicionario_original.items()} print(dicionario_invertido) # Saída: {1: 'a', 2: 'b', 3: 'c'} ``` # Vantagens * **Concisão**: Permite criar dicionários complexos em uma única linha de código, tornando-o mais legível do que loops `for` tradicionais. * **Eficiência**: Geralmente mais rápido do que construir dicionários usando loops `for` e o método `dict.update()` ou `dict[key] = value`. * **Clareza**: A estrutura `chave: valor for item in iteravel` é intuitiva e expressa claramente a intenção de criar um dicionário. A compreensão de dicionários é uma ferramenta poderosa no Python para manipulação de dados, especialmente quando se trabalha com transformações e filtros em coleções. :: **Referência** :: [Site oficial do Python sobre compreensões de lista](https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions)