{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dicionários em Python\n",
"\n",
"Um dicionário é semelhante a uma lista, mas você acessa valores através de uma **chave** em vez de um índice. Uma chave pode ser uma string ou um número. Os dicionários são delimitados por chaves **({})**, por exemplo:\n",
"\n",
"```python\n",
"d = {'chave1' : 1, 'chave2' : 2, 'chave3' : 3}\n",
"```\n",
"\n",
"Acima vemos um dicionário chamado `d`, com três pares chave-valor. A chave 'chave1' aponta para o valor 1, 'chave2' para 2 e 'chave3' aponta para o valor 3.\n",
"\n",
"Dicionários são ótimos para coisas do tipo agenda de telefones (pares de nomes e telefones), páginas de login (pares de endereço de e-mail com um username), etc.\n",
"\n",
"Para acessar um dado elemento do dicionário, você usa a notação `dicionario[chave]`. Mais exemplos abaixo:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"908765\n",
"912345\n"
]
}
],
"source": [
"telefones = {\"D. Florinda\":\"912345\", \n",
" \"Seu Madruga\":\"908765\", \n",
" \"Prof. Girafales\":\"987657\", \n",
" \"Seu Barriga\":\"876543\"}\n",
"\n",
"# Mostrar o telefone do Seu Madruga:\n",
"print(telefones[\"Seu Madruga\"])\n",
"\n",
"# Mostrar o telefone da D. Florinda\n",
"print(telefones[\"D. Florinda\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Na célula abaixo, mostre o endereço do Chaves:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"enderecos = {\"Quico\":\"Casa 14\",\n",
" \"Chiquinha\":\"Casa 72\",\n",
" \"Chaves\":\"Barril de Madeira\", \n",
" \"Dona Clotilde\":\"Casa 71\" }\n",
"\n",
"# Escreva o seu código aqui"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Adicionando novos elementos a um dicionário\n",
"Assim como listas, dicionários são mutáveis, significa que eles permitem adicionar e remover elementos depois de criados. Nós adicionamos elementos assim:\n",
"\n",
"```python\n",
"dicionario[nova_chave] = novo_valor\n",
"```\n",
"\n",
"Um dicionário vazio é definido com `{}`, parecido quando criamos uma lista vazia com `[]`:\n",
"\n",
"```python\n",
"dicionario_vazio = {}\n",
"```\n",
"\n",
"O tamanho `len()` de um dicionário é o número de pares chave-valor que ele possui. Cada par conta apenas uma vez, mesmo que o valor seja uma lista (é isso mesmo, você pode colocar até listas dentro de dicionários!).\n",
"\n",
"Na célula abaixo, adicione pelo menos três pares chave-valor à variável menu, com o nome do prato (como \"string\") para a chave e o preço (um número real ou inteiro) como valor. Aqui está um exemplo:\n",
"```python\n",
"menu['sopa'] = 10.50\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4.0\n",
"Exitem 1 itens no menu.\n",
"{'tapioca simples': 4.0}\n"
]
}
],
"source": [
"menu = {} # Dicionário vazio\n",
"menu['tapioca simples'] = 4.00 # Adicionando um prato ao menu\n",
"print(menu['tapioca simples'])\n",
"\n",
"# Escreva o seu código aqui: adicione alguns pares de prato e preço ao menu!\n",
"\n",
"\n",
"\n",
"\n",
"print(\"Exitem \" + str(len(menu)) + \" itens no menu.\")\n",
"print(menu)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Alterando elementos no dicionário\n",
"\n",
"Como os dicionários são mutáveis, eles podem ser alterados de várias maneiras. Podemos remover elementos de um dicionário com o comando del:\n",
"```python\n",
"del dicionario[nome_chave]\n",
"```\n",
"O comando acima irá remover a chave `nome_chave` e o valor associado a ela do dicionário.\n",
"\n",
"Um novo valor pode ser associado a uma chave existente atribuindo um valor àquela chave:\n",
"\n",
"```python\n",
"dicionario[chave] = novo_valor\n",
"```\n",
"\n",
"Na célula abaixo, remova os professores Ana e Ronald do dicionário usando `del`. Altere o departamento do professor Fernando pois ele não está mais na UFC Virtual. Pode ser qualquer departamento à sua escolha.\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'Claudia': 'DC', 'Fernando': 'UFC Virtual', 'Ana': 'Matemática', 'Ronald': 'Estatística'}\n"
]
}
],
"source": [
"# chave - professor : valor: lotação (Departamento) \n",
"professores = { 'Ana' : 'Matemática',\n",
"'Yuri' : 'DLE',\n",
"'Fernando' : 'UFC Virtual',\n",
"'Claudia' : 'DC'\n",
"'Ronald' : 'Estatística'}\n",
"\n",
"# Removendo a entrada 'Yuri'. (Ele comprou um barquinho e foi velejar no mar mediterrâneo.)\n",
"del professores['Yuri']\n",
"\n",
"# Escreva o seu código aqui\n",
"\n",
"\n",
"\n",
"\n",
"print(professores)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Vejamos mais alguns exemplos com dicionários:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"987654\n"
]
}
],
"source": [
"conta = {\n",
" \"nome_cliente\": \"Seu Madruga\",\n",
" \"telefones\": [\"987654\", \"234567\"],\n",
" \"saldo\": -2034.76,\n",
" \"cliente_desde\": \"01/04/2008\",\n",
" \"ativo\": True\n",
"}\n",
"print(conta[\"telefones\"][0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"No exemplo acima, nós criamos um dicionário que armazena um registro de conta bancária.
\n",
"Observe que são armazenados vários tipos de valores.\n",
"A chave \"telefones\" possui uma lista, a chave \"saldo\" possui um float (é como chamamos números reais em Python), a chave \"ativo\" possui um booleano e as demais possuem strings.
\n",
"Ao final mostramos mostramos o primeiro elemento (`[0]`) da lista na chave \"telefones\" (`conta[\"telefones\"]`). Nós temos acesso direto a qualquer valor na lista, inclusive mostrar a lista inteira:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['987654', '234567']\n"
]
}
],
"source": [
"conta = {\n",
" \"nome_cliente\": \"Seu Madruga\",\n",
" \"telefones\": [\"987654\", \"234567\"],\n",
" \"saldo\": -2034.76,\n",
" \"cliente_desde\": \"01/04/2008\",\n",
" \"ativo\": True\n",
"}\n",
"print(conta[\"telefones\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Agora vamos exercitar um pouco de tudo o que aprendemos sobre dicionários e listas até aqui.
\n",
"Na célula abaixo, faça as seguintes operações no dicionário `conta`:\n",
"* Adicione uma nova chave chamada \"e-mails\" e a ela atribua uma lista de strings: \"madruguinha@email.com\" e \"eu_sou_o_cara@madruga.com\";\n",
"\n",
"* Ordene os valores da lista usando `.sort()`;\n",
"* Subtraia 100.00 do saldo da conta;\n",
"* Mostre o dicionário."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"conta = {\n",
" \"nome_cliente\": \"Seu Madruga\",\n",
" \"telefones\": [\"987654\", \"234567\"],\n",
" \"saldo\": -2034.76,\n",
" \"cliente_desde\": \"01/04/2008\",\n",
" \"ativo\": True\n",
"}\n",
"\n",
"# Adicionando uma chave \"enderecos\" e atribuindo uma lista de strings\n",
"conta[\"enderecos\"] = ['Casa 72', 'Avenida dos desempregados']\n",
"\n",
"# Ordenando a lista na chave \"enderecos\"\n",
"conta[\"enderecos\"].sort() \n",
"\n",
"# Comece a escrever o seu código aqui\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Loops em dicionários\n",
"\n",
"Você já deve estar se perguntando como um loop num dicionário funcionaria.\n",
"\n",
"Nós pegamos a chave ou o valor?\n",
"\n",
"Em poucas palavras, você pega a chave e então usa a chave para obter o valor.\n",
"\n",
"Por exemplo:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Esse dicionário possui o valor 10!\n"
]
}
],
"source": [
"d = {'x': 9, 'y': 10, 'z': 20}\n",
"for chave in d:\n",
" if d[chave] == 10:\n",
" print (\"Esse dicionário possui o valor 10!\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Eis o que fizemos no exemplo acima:\n",
"1. Primeiro, nós criamos um dicionário `d` com strings como chaves e números como valores.\n",
"2. Depois, nós percorremos o dicionário, armazenando uma chave em `chave` por vez.\n",
"3. Então para cada chave, nós verificamos se o valor da chave é igual a 10.\n",
"4. Se sim, então nós mostramos a string \"Esse dicionário possui o valor 10!\".\n",
"\n",
"Agora é a sua vez de tentar. Na linha 5 da célula abaixo, mostre a chave e o valor associado a ela."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"d = {'a': 'abacaxi', 'b': 'banana', 'c': 'cereja'}\n",
"\n",
"for chave in d:\n",
" # Your code here!\n",
" "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}