Resumo: neste tutorial, você aprenderá sobre a compreensão de dicionários Python para transformar ou filtrar itens em um dicionário.
Introdução à compreensão de dicionários Python
Uma compreensão de dicionário permite que você execute um loop for
em um dicionário e faça algo em cada item, como transformar ou filtrar e retornar um novo dicionário.
Ao contrário de um loop for
, uma compreensão de dicionário oferece uma sintaxe mais expressiva e concisa quando você a usa corretamente.
Aqui está a sintaxe geral para a compreensão do dicionário:
{key:value for (key,value) in dict.items() if condition}
Esta expressão de compreensão do dicionário retorna um novo dicionário cujo item especificado pela expressão key: value
Exemplos de compreensão de dicionários Python
Veremos como usar a compreensão do dicionário para transformar e filtrar itens em um dicionário.
1) Usando a compreensão de dicionários Python para transformar um dicionário
Suponha que você tenha o seguinte dicionário cujos itens são símbolo de estoque e preço:
stocks = {
'AAPL': 121,
'AMZN': 3380,
'MSFT': 219,
'BIIB': 280,
'QDEL': 266,
'LVGO': 144
}
Para aumentar o preço de cada ação em 2%, você pode criar um loop for como este:
stocks = {
'AAPL': 121,
'AMZN': 3380,
'MSFT': 219,
'BIIB': 280,
'QDEL': 266,
'LVGO': 144
}
new_stocks = {}
for symbol, price in stocks.items():
new_stocks[symbol] = price*1.02
print(new_stocks)
Saída:
{'AAPL': 123.42, 'AMZN': 3447.6, 'MSFT': 223.38, 'BIIB': 285.6, 'QDEL': 271.32, 'LVGO': 146.88}
Como funciona.
- Primeiro, percorra os itens do dicionário
stocks
- Em segundo lugar, aumente o preço em 2% e adicione o item ao novo dicionário (
new_stocks
).
O exemplo a seguir mostra como usar a compreensão do dicionário para obter o mesmo resultado:
stocks = {
'AAPL': 121,
'AMZN': 3380,
'MSFT': 219,
'BIIB': 280,
'QDEL': 266,
'LVGO': 144
}
new_stocks = {symbol: price * 1.02 for (symbol, price) in stocks.items()}
print(new_stocks)
Essa compreensão do dicionário é equivalente à contraparte do loop for:
2) Usando a compreensão de dicionários Python para filtrar um dicionário
Para selecionar ações cujos preços são maiores que 200, você pode usar o seguinte loop for
:
stocks = {
'AAPL': 121,
'AMZN': 3380,
'MSFT': 219,
'BIIB': 280,
'QDEL': 266,
'LVGO': 144
}
selected_stocks = {}
for symbol, price in stocks.items():
if price > 200:
selected_stocks[symbol] = price
print(selected_stocks)
Como funciona.
- Primeiro, itere sobre o item do dicionário de ações
- Em seguida, adicione o item ao dicionário selected_stocks se o preço for maior que 200
O exemplo a seguir usa a compreensão do dicionário com uma cláusula if para obter o mesmo resultado:
stocks = {
'AAPL': 121,
'AMZN': 3380,
'MSFT': 219,
'BIIB': 280,
'QDEL': 266,
'LVGO': 144
}
selected_stocks = {s: p for (s, p) in stocks.items() if p > 200}
print(selected_stocks)
E você pode comparar o loop for e a compreensão do dicionário:
Resumo
- Uma compreensão de dicionário itera sobre itens de um dicionário e permite que você crie um novo dicionário transformando ou filtrando cada item.