Dicionários. Prof. Alberto Costa Neto Programação em Python

Documentos relacionados
Aplicações de Dicionários. Prof. Alberto Costa Neto Programação em Python

Principais Idiomas de Laços. Prof. Alberto Costa Neto Programação em Python

Tuplas. Prof. Alberto Costa Neto Programação em Python

Listas. Prof. Alberto Costa Neto Programação em Python

Funções. Prof. Alberto Costa Neto Programação em Python

A Linguagem Python: Uma visão geral. Prof. Alberto Costa Neto Programação em Python

Motivação Programar? Prof. Alberto Costa Neto Programação em Python

Arquivos. Prof. Alberto Costa Neto Programação em Python

Variáveis, Expressões e Comandos. Prof. Alberto Costa Neto Programação em Python

Dicionários. Operações Aliases, cópias. Os tipos de dados compostos que estudamos até ao momento (strings, listas, tuplos) são sequenciais:

Computação 1 - Python Aula 10 - Teórica: Estrutura de Dados - Dicionário. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18

Arquivos. Prof. Alberto Costa Neto Programação em Python

A Linguagem Python: Uma visão geral. Prof. Alberto Costa Neto Programação em Python

Listas e Tuplas. Vanessa Braganholo

Vetores. Vanessa Braganholo

Listas, conjuntos e dicionários

Python: Dicionários. Claudio Esperança

Módulo: PYTHON. Felipe Oliveira

Aula passada. Aula passada... Sequências Funções puras e modificadores. Listas Tuplos

MC-102 Aula 02 Shell Interativa, Programa Básico, Variáveis, Atribuições, Tipos Simples. Instituto de Computação Unicamp

Comandos de Entrada e Saída. Prof. Alberto Costa Neto Programação em Python

Entrada e saída. Marco A L Barbosa malbarbo.pro.br. Departamento de Informática Universidade Estadual de Maringá

Python 3.x Estrutura de Repetição for Estrutura de Decisão if then else

Paradigmas de Programação

Usos do Laço For. Prof. Alberto Costa Neto Programação em Python

Python: Exceções, Iteradores e Geradores. Claudio Esperança

Luciano Ramalho setembro/2012. Objetos Pythonicos. Orientação a objetos e padrões de projeto em Python

Estruturas de Dados em Python

Capítulo 8. Estruturas de Controle no Nível de Sentença

Sequências - Tuplas. Sequências - Tuplas

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Trabalhando com Arquivos

1 Definição de funções 1. 2 Valores boleanos e condicionais 5. Podemos depois usar as novas funções tal qual as pré-definidas

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Produtividade e qualidade em Python através da metaprogramação

Professor Jefferson Chaves Jefferson de Oliveira Chaves - IFC Araquari

24/09/2014. Prof. André Backes

Os elementos da programação

Python 3.x Estrutura de Repetição while

MCG114 Programação de Computadores I. Strings. Strings. Strings. Strings. Strings 3/26/18. Profa. Janaína Gomide

TCC 00308: Programação de Computadores I Organização de programas em Python

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo

Algoritmos e estrutura de dados

Linguagem Python. Processamento Estatístico da Linguagem Natural. Barra invertida em strings. Strings. Aspas triplas. Operações com Strings

MCG126 Programação de Computadores II

Estruturas de controle no nível de sentença

Computação I - Python

Exercícios para Fundamentos da Programação

Introdução à Programação / Programação I

Programação de Computadores

Aula de hoje. Expressões. Expressões. Expressões. Exemplos. Programa em Python. SCC Introdução à Programação para Engenharias

Computadores e Programação o semestre. Aula Helmut Wolters, Jorge Landeck, Miguel Oliveira

Computação 1 - Python Aula 2 - Teórica. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 39

Introdução a Programação

Organização de programas em Python. Vanessa Braganholo

1/ 26. Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função

Algoritmos e estrutura de dados

PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015

Programação I Aula 8 Cadeias de carateres

C A P I T U L O 2 S I N T A X E B Á S I C A - V A R I Á V E I S E C O N S T A N T E S E M P H P

Sobre a Disciplina Programação Imperativa. Prof. Alberto Costa Neto DComp/UFS

Computação 2. Aula 11 Teórica professor: Leonardo Carvalho

Aula de hoje. Outras estruturas de dados. Teoria dos conjuntos. Teoria dos conjuntos. Conjuntos em Python. Conjuntos em Python

Computação I - Python Aula 1 - Prática: Primeiros Passos- Função

Descritores de atributos em Python

Python: Listas. Claudio Esperança

Programação Orientada a Objetos

Nas aulas anteriores Strings. Ciclos

MBA GESTÃO COMERCIAL NEGOCIAÇÃO O QUE É ÉTICA?

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias

Conceitos Fundamentais de MatLab/Octave. Prof. Responsáveis Wagner Santos C. de Jesus

Processamento da Informação Teoria. Desvio Condicional

4. PÚBLICO ALVO Alunos que queiram conhecer os fundamentos de programação de computadores com a linguagem Python.

Framework MBA GESTÃO DE COMPRAS NEGOCIAÇÃO. Valor. Strategic Sourcing. Gestão de Fornecedores. Gestão por Categorias

Computação 1 - Python Aula 6 - Teórica: Listas 1/ 28

AMBIENTE DE PROGRAMAÇÃO PYTHON II

MBA EM GESTÃO FISCAL E TRIBUTÁRIO Aula: Indicadores

WORKSHOP: ANÁLISE DE VIABILIDADE FINANCEIRA

Laboratório de Programação 1 Aula 04

MBA EM GESTÃO DE COMPRAS

Programação I Aula 11 Mais sobre ciclos e iteração

ESPECIALIZAÇÃO EM NEGOCIAÇÃO AULA 5: NECESSIDADE + PRAZO + BATNA + ITENS NEGOCIÁVEIS

Python: Comandos Básicos. Claudio Esperança

Algoritmos e Programação

Padrão para a codificação em Python

Computação 1 - Python 1/ 41

Algoritmos e Programação

Passo a passo de como montar sua matriz estratégica de categorias de compras. Febracorp University

A resposta apresentada em aula, no quadro, (em Chapin e/ou Português Estruturado) está correta?

Linguagens de Programação

1/ 23. Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função

Curso básico de Python para estudantes de Física

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

OS 8 PRINCIPAIS INDICADORES NA GESTÃO DE ESTOQUES

Programação: Vetores

Introdução à Programação / Programação I

Introdução à Programação Aula 17 Deteção e correção de erros

MC-102 Aula 11 Strings

Transcrição:

Dicionários Prof. Alberto Costa Neto Programação em Python

O que é uma Coleção? Uma coleção permite colocar vários valores em um única variável Coleções são práticas porque permitem carregar muitos valores empacotados de forma conveniente pelo programa Temos algumas maneiras de acessar as diferentes partes da variável do tipo coleção

O que não é uma Coleção? A maioria de nossas variáveis têm um valor apenas quando um novo valor é colocado nela, o antigo é sobrescrito $ python >>> x = 2 >>> x = 4 >>> print x 4

Dois tipos de Coleções List (Lista) > Uma coleção linear de valores que ficam em ordem Dictionary (Dicionário) > Um saco de valores, onde cada valor tem um rótulo identificando-o

Dicionários calculadora lenço perfume dinheiro doces http://en.wikipedia.org/wiki/associative_array

Dicionários São as coleções de dados mais poderosas de Python Permitem operações rápidas no estilo de banco de dados em Python Têm diferentes denominações em outras linguagens de programação > Arrays Associativos - Perl / PHP > Properties, Map e Hashtable - Java > Property Bag - C# /.Net http://en.wikipedia.org/wiki/associative_array

Dicionários Listas indexam suas entradas baseado-se na posição na lista Dicionários são como sacolas sem noção de ordem Então a indexação é através das lookup tags (rótulos de busca) >>> bolsa = dict() >>> bolsa['dinheiro'] = 12 >>> bolsa['doce'] = 3 >>> bolsa['lenco'] = 75 >>> print bolsa {'dinheiro': 12, 'lenco': 75, 'doce': 3} >>> print bolsa['doce'] 3 >>> bolsa['doce'] = bolsa['doce'] + 2 >>> print bolsa {'dinheiro': 12, 'lenco': 75, 'doce': 5}

Comparando Listas e Dicionários Dicionários são com Listas exceto que usam chaves ( rótulos de busca) no lugar de números para buscar valores >>> lst = list() >>> lst.append(21) >>> lst.append(183) >>> print lst [21, 183] >>> lst[0] = 23 >>> print lst [23, 183] >>> dic = dict() >>> dic['idade'] = 21 >>> dic['curso'] = 182 >>> print dic {'curso': 182, 'idade': 21} >>> dic['idade'] = 23 >>> print dic {'curso': 182, 'idade': 23}

>>> lst = list() >>> lst.append(21) >>> lst.append(183) >>> print lst [21, 183] >>> lst[0] = 23 >>> print lst [23, 183] Lista Chave Valor [0] 21 [1] 183 lst >>> dic = dict() >>> dic['idade'] = 21 >>> dic['curso'] = 182 >>> print dic {'curso': 182, 'idade': 21} >>> dic['idade'] = 23 >>> print dic {'course': 182, 'idade': 23} Dicionário Chave Valor ['curso'] 183 ['idade'] 21 dic

Literais Dicionário (Constantes) Usam chaves e têm uma lista de pares (chave : valor) Para criar um dicionário vazio usamos chaves { } >>> dic = { 'chuck' : 1, 'fred' : 42, 'jan': 100} >>> print dic {'jan': 100, 'chuck': 1, 'fred': 42} >>> dic_vazio = { } >>> print dic_vazio {} >>>

Qual é nome mais comum? marquard csev cwen marquard csev cwen csev marquard

Qual é o nome mais comum?

Qual é nome mais comum? marquard csev cwen marquard csev cwen csev marquard

Qual é nome mais comum? marquard csev cwen marquard csev cwen csev marquard

Muitos Contadores com um Dicionários Um uso bastante comum de um dicionário é contar quantas vezes algo ocorre ou foi encontrado >>> dic = dict() >>> dic['csev'] = 1 >>> dic['cwen'] = 1 >>> print dic {'csev': 1, 'cwen': 1} >>> dic['cwen'] = dic['cwen'] + 1 >>> print dic {'csev': 1, 'cwen': 2} Chave Valor

Tracebacks de Dicionários Um erro comum é referenciar uma chave que não está no dicionário Para evitá-lo, podemos usar o operador in para testar se a chave está contida no dicionário >>> dic = dict() >>> print dic['csev'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'csev' >>> print 'csev' in dic False

E quando surge um novo valor? Quando encontramos um novo nome, precisamos adicionar uma nova entrada no dicionário. Da segunda vez em diante que o nome é encontrado, basta adicionar 1 ao respectivo contador no dicionário. conts = dict() nomes = ['csev', 'cwen', 'csev', 'zqian', 'cwen'] for nome in nomes : if nome not in conts: conts[nome] = 1 else : conts[nome] = conts[nome] + 1 print conts {'csev': 2, 'zqian': 1, 'cwen': 2}

O método get dos dicionários O padrão de checar antecipadamente se a chave já está no dicionário e assumir um valor padrão se a chave não estiver lá é tão comum que existe um método chamado get() que faz isso por nós if nome in conts: x = conts[nome] else : x = 0 x = conts.get(nome, 0) Valor padrão se a chave não existir (e sem Traceback). {'csev': 2, 'zqian': 1, 'cwen': 2}

Contagem simplificada com get Podemos usar get() e prover o valor padrão 0 quando a chave não estiver ainda no dicionário e então somente adicionar 1 conts = dict() nomes = ['csev', 'cwen', 'csev', 'zqian', 'cwen'] for nome in nomes : conts[nome] = conts.get(nome, 0) + 1 print conts Valor padrão {'csev': 2, 'zqian': 1, 'cwen': 2}

Contagem simplificada com get conts = dict() nomes = ['csev', 'cwen', 'csev', 'zqian', 'cwen'] for nome in nomes : conts[nome] = conts.get(nome, 0) + 1 print conts http://www.youtube.com/watch?v=ehj9uyx5l58

Padrão de Contagem conts = dict() print 'Digite uma linha de texto:' linha = raw_input('') palavras = linha.split() print 'Palavras:', palavras print 'Contando...' for palavra in palavras: conts[palavra] = conts.get(palavra,0) + 1 print 'Contadores', conts O padrão geral para contar as palavras em uma linha de texto é particionar a linha em palavras, então iterar pelas palavras e usar um dicionário para contabilizar o número de ocorrências de cada palavra independentemente.

Contando Palavras python wordcount.py Digite uma linha de texto: the clown ran after the car and the car ran into the tent and the tent fell down on the clown and the car Palavras: ['the', 'clown', 'ran', 'after', 'the', 'car', 'and', 'the', 'car', 'ran', 'into', 'the', 'tent', 'and', 'the', 'tent', 'fell', 'down', 'on', 'the', 'clown', 'and', 'the', 'car'] Contando Contadores {'and': 3, 'on': 1, 'ran': 2, 'car': 3, 'into': 1, 'after': 1, 'clown': 2, 'down': 1, 'fell': 1, 'the': 7, 'tent': 2} http://www.flickr.com/photos/71502646@n00/2526007974/

conts = dict() print 'Digite uma linha de texto:' linha = raw_input('') palavras = linha.split() print 'Palavras:', palavras print 'Contando...' for palavra in palavras: conts[palavra] = conts.get(palavra,0) + 1 print 'Contadores', conts python wordcount.py Digite uma linha de texto: the clown ran after the car and the car ran into the tent and the tent fell down on the clown and the car Palavras: ['the', 'clown', 'ran', 'after', 'the', 'car', 'and', 'the', 'car', 'ran', 'into', 'the', 'tent', 'and', 'the', 'tent', 'fell', 'down', 'on', 'the', 'clown', 'and', 'the', 'car'] Contando... Contadores {'and': 3, 'on': 1, 'ran': 2, 'car': 3, 'into': 1, 'after': 1, 'clown': 2, 'down': 1, 'fell': 1, 'the': 7, 'tent': 2}

Laços Definidos e Dicionários Ainda que dicionários não sejam armazenados em ordem, nós podemos escrever um laço for que percorre todas as entradas em um dicionário na prática passamos todas as chaves no dicionário e buscamos os respectivos valores >>> conts = { 'chuck' : 1, 'fred' : 42, 'jan': 100} >>> for chave in conts:... print chave, conts[chave]... jan 100 chuck 1 fred 42 >>>

Recuperando listas de Chaves e Valores Você pode obter uma lista de chaves, valores, ou itens (contém ambos juntos) de um dicionário >>> dic = { 'chuck' : 1, 'fred' : 42, 'jan': 100} >>> print list(dic) ['jan', 'chuck', 'fred'] >>> print dic.keys() ['jan', 'chuck', 'fred'] >>> print dic.values() [100, 1, 42] >>> print dic.items() [('jan', 100), ('chuck', 1), ('fred', 42)] >>> O que é uma 'tupla'? - em breve...

Bônus: 2 Variáveis de Iteração! Podemos iterar sobre os pares (chave-valor) em um dicionário usando *duas* variáveis de iteração Em cada iteração, a primeira variável de iteração recebe uma chave e a segunda o valor correspondente a esta chave >>> dic = { 'chuck' : 1, 'fred' : 42, 'jan': 100} >>> for chave,valor in dic.items() :... print chave, valor... jan 100 chuck 1 Chave Valor fred 42 >>> [jan] 100 [chuck] 1 [fred] 42

nome = raw_input('nome Arquivo:') arq = open(nome) texto = arq.read() palavras = texto.split() conts = dict() for palavra in palavras: conts[palavra] = conts.get(palavra,0) + 1 freq_cont = None palavra_cont = None for palavra,cont in conts.items(): if freq_cont is None or cont > freq_cont: palavra_cont = palavra freq_cont = cont python palavras.py Nome Arquivo: words.txt to 16 python palavras.py Nome Arquivo: clown.txt the 7 print palavra_cont, freq_cont

Acknowledgements / Contributions Agradecimentos / Contribuições These slides are Copyright 2010- Charles R. Severance ( www.dr-chuck.com) of the University of Michigan School of Information and open.umich.edu and made available under a Creative Commons Attribution 4.0 License. Please maintain this last slide in all copies of the document to comply with the attribution requirements of the license. If you make a change, feel free to add your name and organization to the list of contributors on this page as you republish the materials.... Initial Development: Charles Severance, University of Michigan School of Information These slides were translated and adapted by Alberto Costa Neto (albertocn.sytes.net) of the Federal University of Sergipe