{ "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.<br> \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.<br>\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.<br>\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 }