SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
Python:
Dicionários

Claudio Esperança
Dicionários
 São estruturas de dados que implementam mapeamentos
 Um mapeamento é uma coleção de associações entre 

pares de valores


O primeiro elemento do par é chamado de chave e o outro de 
conteúdo

 De certa forma, um mapeamento é uma generalização da 

idéia de acessar dados por índices, exceto que num 
mapeamento os índices (ou chaves) podem ser de 
qualquer tipo imutável
Chaves vs. Índices
 Considere que queiramos representar um caderno de 

telefones


Uma solução é ter uma lista de nomes e outra de telefones



Telefone de nome[i] armazenado em telefone[i]
Acrescentar “Joao” com telefone “20122232”:
nome+=



“Joao” telefone+=“20122232”

Para encontrar o telefone de “Joao”:
Tel = telefone[nome.index[“Joao”]]



Dicionários tornam isso mais fácil e eficiente
telefone[“Joao”] = “20122232”
Tel = telefone[“Joao”]
Criando dicionários
 Uma constante do tipo dicionário é escrita 
{ chave1:conteúdo1, ... chaveN:conteúdoN}
 Uma variável do tipo dicionário pode ser “indexada” da 

maneira habitual, isto é, usando colchetes
 O conteúdo associado a uma chave pode ser alterado 
atribuindo­se àquela posição do dicionário
 Novos valores podem ser acrescentados a um dicionário 
fazendo atribuição a uma chave ainda não definida
 Não há ordem definida entre os pares chave/conteúdo de 
um dicionário
Exemplo
>>> dic = {"joao":100,"maria":150}
>>> dic["joao"]
100
>>> dic["maria"]
150
>>> dic["pedro"] = 10
>>> dic
{'pedro': 10, 'joao': 100, 'maria': 150}
>>> dic = {'joao': 100, 'maria': 150, 'pedro':
10}
>>> dic
{'pedro': 10, 'joao': 100, 'maria': 150}
Dicionários não têm ordem
 As chaves dos dicionários não são armazenadas em 

qualquer ordem específica



Na verdade, dicionários são implementados por tabelas de 
espalhamento (Hash Tables)
A falta de ordem é proposital

 Diferentemente de listas, atribuir a um elemento de um 

dicionário não requer que a posição exista previamente
X = []
X [10] = 5
. . .
Y = {}
Y [10] = 5

# ERRO!
# OK!
A função dict
 A função dict é usada para construir dicionários e requer 

como parâmetros:



Uma lista de tuplas, cada uma com um par chave/conteúdo, 
ou
Uma seqüência de itens no formato chave=valor


Nesse caso, as chaves têm que ser strings, mas são escritas sem 
aspas
Exemplo
>>> d = dict([(1,2),('chave','conteudo')])
>>> d[1]
2
>>> d['chave']
'conteudo'
>>> d = dict(x=1,y=2)
>>> d['x']
1
>>> d = dict(1=2,3=4)
SyntaxError: keyword can't be an expression
Formatando com Dicionários
 O operador de formatação quando aplicado a dicionários 

requer que os valores das chaves apareçam entre 
parênteses antes do código de formatação



O conteúdo armazenado no dicionário sob aquela chave é 
substituído na string de formatação
Ex:
>>> dic = { "Joao":"a", "Maria":"b" }
>>> s = "%(Joao)s e %(Maria)s"
>>> s % dic
'a e b'
Método clear
 clear()
 Remove todos os elementos do dicionário
 Ex.:
>>> x = { "Joao":"a", "Maria":"b" }
>>> y = x
>>> x.clear()
>>> print x,y
{} {}


Diferente de atribuir {} à variável:
>>> x = { "Joao":"a", "Maria":"b" }
>>> y = x
>>> x = {}
>>> print x,y
{} {'Joao': 'a', 'Maria': 'b'}
Método copy
 copy()
 Retorna um outro dicionário com os mesmos pares 
chave/conteúdo
 Observe que os conteúdos não são cópias, mas apenas 
referências para os mesmos valores
>>> x = {"Joao":[1,2], "Maria":[3,4]}
>>> y = x.copy()
>>> y ["Pedro"]=[5,6]
>>> x ["Joao"] += [3]
>>> print x
{'Joao': [1, 2, 3], 'Maria': [3, 4]}
>>> print y
{'Pedro': [5, 6], 'Joao': [1, 2, 3], 'Maria': [3, 4]}
Método fromkeys
 fromkeys(lista,valor)
 Retorna um novo dicionário cujas chaves são os elementos 
de lista e cujos valores são todos iguais a valor
 Se valor não for especificado, o default é None
>>> {}.fromkeys([2,3])
{2: None, 3: None}
# Podemos usar o nome da classe ao invés
# de um objeto:
>>> dict.fromkeys(["Joao","Maria"],0)
{'Joao': 0, 'Maria': 0}
Método get
 get(chave,valor)
 Obtém o conteúdo de chave
 Não causa erro caso chave não exista: retorna valor
 Se valor não for especificado chaves inexistentes retornam 
None
 Ex.:
>>> dic = { "Joao":"a", "Maria":"b" }
>>> dic.get("Pedro")
>>> print dic.get("Pedro")
None
>>> print dic.get("Joao")
a
>>> print dic.get("Carlos","N/A")
N/A
Método has_key
 has_key(chave)
 dic.has_key(chave) é o mesmo que chave in dic
 Ex.:
>>> dic = { "Joao":"a", "Maria":"b" }
>>> dic.has_key("Joao")
True
>>> dic.has_key("Pedro")
False
Métodos items, keys e values
 items() retorna uma lista com todos os pares 

chave/conteúdo do dicionário
 keys() retorna uma lista com todas as chaves do 
dicionário
 values() retorna uma lista com todos os valores do 
dicionário
 Ex.:
>>> dic.items()
[('Joao', 'a'), ('Maria', 'b')]
>>> dic.keys()
['Joao', 'Maria']
>>> dic.values()
['a', 'b']
Método pop
 pop (chave)
 Obtém o valor correspondente a chave e  remove o par 
chave/valor do dicionário
 Ex.:
>>> d = {'x': 1, 'y': 2}
>>> d.pop('x')
1
>>> d
{'y': 2}
Método popitem
 popitem()
 Retorna e remove um par chave/valor aleatório do 
dicionário
 Pode ser usado para iterar sobre todos os elementos do 
dicionário
 Ex:
>>> d
{'url': 'http://www.python.org', 'spam': 0,
'title': 'Python Web Site'}
>>> d.popitem()
('url', 'http://www.python.org')
>>> d
{'spam': 0, 'title': 'Python Web Site'}
Método update
 update(dic)
 Atualiza um dicionário com os elementos de outro
 Os itens em dic são adicionados um a um ao dicionário 
original
 É possível usar a mesma sintaxe da função dict para 
especificar dic
 Ex.:
>>> x = {"a":1,"b":2,"c":3}
>>> y = {"z":9,"b":7}
>>> x.update(y)
>>> x
{'a': 1, 'c': 3, 'b': 7, 'z': 9}
>>> x.update(a=7,c="xxx")
>>> x
{'a': 7, 'c': 'xxx', 'b': 7, 'z': 9}

Más contenido relacionado

La actualidad más candente

Phishing
PhishingPhishing
Phishing
Pmpc10
 
Aula 04 isc - a informação e sua representação
Aula 04   isc - a informação e sua representaçãoAula 04   isc - a informação e sua representação
Aula 04 isc - a informação e sua representação
Fábio Andrade
 
Estrutura de mercados
Estrutura de mercadosEstrutura de mercados
Estrutura de mercados
PMM/SEMED
 
O século de péricles
O século de périclesO século de péricles
O século de péricles
Ana Barreiros
 

La actualidad más candente (20)

Data types in python lecture (2)
Data types in python lecture (2)Data types in python lecture (2)
Data types in python lecture (2)
 
A Sociedade do Antigo Regime
A Sociedade do Antigo RegimeA Sociedade do Antigo Regime
A Sociedade do Antigo Regime
 
R markdown and Rmdformats
R markdown and RmdformatsR markdown and Rmdformats
R markdown and Rmdformats
 
Phishing
PhishingPhishing
Phishing
 
Algoritmos gulosos
Algoritmos gulososAlgoritmos gulosos
Algoritmos gulosos
 
String in python use of split method
String in python use of split methodString in python use of split method
String in python use of split method
 
Python standard data types
Python standard data typesPython standard data types
Python standard data types
 
Criação de formulários e tabelas com HTML
Criação de formulários e tabelas com HTMLCriação de formulários e tabelas com HTML
Criação de formulários e tabelas com HTML
 
Aula 04 isc - a informação e sua representação
Aula 04   isc - a informação e sua representaçãoAula 04   isc - a informação e sua representação
Aula 04 isc - a informação e sua representação
 
Estrutura de mercados
Estrutura de mercadosEstrutura de mercados
Estrutura de mercados
 
50 citações super inspiradoras para startups!
50 citações super inspiradoras para startups! 50 citações super inspiradoras para startups!
50 citações super inspiradoras para startups!
 
Linguagem C 02 String
Linguagem C 02 StringLinguagem C 02 String
Linguagem C 02 String
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Password cracking and brute force
Password cracking and brute forcePassword cracking and brute force
Password cracking and brute force
 
Aula 2 - Economia
Aula 2 - EconomiaAula 2 - Economia
Aula 2 - Economia
 
Java nio ( new io )
Java nio ( new io )Java nio ( new io )
Java nio ( new io )
 
A Arquitectura do Ferro
A Arquitectura do FerroA Arquitectura do Ferro
A Arquitectura do Ferro
 
interface with mysql.pptx
interface with mysql.pptxinterface with mysql.pptx
interface with mysql.pptx
 
List in python
List in pythonList in python
List in python
 
O século de péricles
O século de périclesO século de péricles
O século de péricles
 

Destacado

011 programando em python - conjuntos
011   programando em python - conjuntos011   programando em python - conjuntos
011 programando em python - conjuntos
Leandro Barbosa
 
07 programando em python - funcoes
 07   programando em python - funcoes 07   programando em python - funcoes
07 programando em python - funcoes
Victor Marcelino
 
05 programando em python - tuplas e strings
 05   programando em python - tuplas e strings 05   programando em python - tuplas e strings
05 programando em python - tuplas e strings
Victor Marcelino
 
Matemática e Data Science
Matemática e Data ScienceMatemática e Data Science
Matemática e Data Science
Gabriel Lanzi
 
09 programando em python - classes
 09   programando em python - classes 09   programando em python - classes
09 programando em python - classes
Victor Marcelino
 
Técnica de mineração de dados uma revisão da literatura
Técnica de mineração de dados uma revisão da literaturaTécnica de mineração de dados uma revisão da literatura
Técnica de mineração de dados uma revisão da literatura
Talita Lima
 
Classficação de Texto e Naive Bayes
Classficação de Texto e Naive BayesClassficação de Texto e Naive Bayes
Classficação de Texto e Naive Bayes
Alexandre Duarte
 
03 programando em python - comandos basicos
 03   programando em python - comandos basicos 03   programando em python - comandos basicos
03 programando em python - comandos basicos
Victor Marcelino
 
02 programando em python - tipos basicos
 02   programando em python - tipos basicos 02   programando em python - tipos basicos
02 programando em python - tipos basicos
Victor Marcelino
 
08 programando em python - recursao
 08   programando em python - recursao 08   programando em python - recursao
08 programando em python - recursao
Victor Marcelino
 
Sql server 2008 r2 security overviewfor admins
Sql server 2008 r2 security   overviewfor adminsSql server 2008 r2 security   overviewfor admins
Sql server 2008 r2 security overviewfor admins
Klaudiia Jacome
 
00 programando em python - introducao
 00   programando em python - introducao 00   programando em python - introducao
00 programando em python - introducao
Victor Marcelino
 
10 programando em python - excecoes
 10   programando em python - excecoes 10   programando em python - excecoes
10 programando em python - excecoes
Victor Marcelino
 

Destacado (20)

011 programando em python - conjuntos
011   programando em python - conjuntos011   programando em python - conjuntos
011 programando em python - conjuntos
 
Mantendo seu Tempo a salvo com Python e Git
Mantendo seu Tempo a salvo com Python e GitMantendo seu Tempo a salvo com Python e Git
Mantendo seu Tempo a salvo com Python e Git
 
Análise dos campeões da Corrida de São Silvestre com Python
Análise dos campeões da Corrida de São Silvestre com PythonAnálise dos campeões da Corrida de São Silvestre com Python
Análise dos campeões da Corrida de São Silvestre com Python
 
Alimentossaralau
AlimentossaralauAlimentossaralau
Alimentossaralau
 
07 programando em python - funcoes
 07   programando em python - funcoes 07   programando em python - funcoes
07 programando em python - funcoes
 
05 programando em python - tuplas e strings
 05   programando em python - tuplas e strings 05   programando em python - tuplas e strings
05 programando em python - tuplas e strings
 
Matemática e Data Science
Matemática e Data ScienceMatemática e Data Science
Matemática e Data Science
 
09 programando em python - classes
 09   programando em python - classes 09   programando em python - classes
09 programando em python - classes
 
Desmistificando Built-in Functions, Lambda e List Comprehension...
Desmistificando Built-in Functions, Lambda e List Comprehension...Desmistificando Built-in Functions, Lambda e List Comprehension...
Desmistificando Built-in Functions, Lambda e List Comprehension...
 
Técnica de mineração de dados uma revisão da literatura
Técnica de mineração de dados uma revisão da literaturaTécnica de mineração de dados uma revisão da literatura
Técnica de mineração de dados uma revisão da literatura
 
Classficação de Texto e Naive Bayes
Classficação de Texto e Naive BayesClassficação de Texto e Naive Bayes
Classficação de Texto e Naive Bayes
 
03 programando em python - comandos basicos
 03   programando em python - comandos basicos 03   programando em python - comandos basicos
03 programando em python - comandos basicos
 
02 programando em python - tipos basicos
 02   programando em python - tipos basicos 02   programando em python - tipos basicos
02 programando em python - tipos basicos
 
R version 3 Examples
R version 3 ExamplesR version 3 Examples
R version 3 Examples
 
InterCon 2012 - Metricas - Data Visualization
InterCon 2012 - Metricas - Data VisualizationInterCon 2012 - Metricas - Data Visualization
InterCon 2012 - Metricas - Data Visualization
 
Batch File Programming
Batch File ProgrammingBatch File Programming
Batch File Programming
 
08 programando em python - recursao
 08   programando em python - recursao 08   programando em python - recursao
08 programando em python - recursao
 
Sql server 2008 r2 security overviewfor admins
Sql server 2008 r2 security   overviewfor adminsSql server 2008 r2 security   overviewfor admins
Sql server 2008 r2 security overviewfor admins
 
00 programando em python - introducao
 00   programando em python - introducao 00   programando em python - introducao
00 programando em python - introducao
 
10 programando em python - excecoes
 10   programando em python - excecoes 10   programando em python - excecoes
10 programando em python - excecoes
 

Más de Victor Marcelino

01 programando em python - sistemas de numeracao
 01   programando em python - sistemas de numeracao 01   programando em python - sistemas de numeracao
01 programando em python - sistemas de numeracao
Victor Marcelino
 
12 programando em python - modulos
 12   programando em python - modulos 12   programando em python - modulos
12 programando em python - modulos
Victor Marcelino
 
14 programando em python - interfaces graficas com tk
 14   programando em python - interfaces graficas com tk 14   programando em python - interfaces graficas com tk
14 programando em python - interfaces graficas com tk
Victor Marcelino
 
13 programando em python - arquivos
 13   programando em python - arquivos 13   programando em python - arquivos
13 programando em python - arquivos
Victor Marcelino
 
11 programando em python - conjuntos
 11   programando em python - conjuntos 11   programando em python - conjuntos
11 programando em python - conjuntos
Victor Marcelino
 
04 programando em python - listas
 04   programando em python - listas 04   programando em python - listas
04 programando em python - listas
Victor Marcelino
 

Más de Victor Marcelino (8)

Aprendendo python
Aprendendo pythonAprendendo python
Aprendendo python
 
01 programando em python - sistemas de numeracao
 01   programando em python - sistemas de numeracao 01   programando em python - sistemas de numeracao
01 programando em python - sistemas de numeracao
 
12 programando em python - modulos
 12   programando em python - modulos 12   programando em python - modulos
12 programando em python - modulos
 
14 programando em python - interfaces graficas com tk
 14   programando em python - interfaces graficas com tk 14   programando em python - interfaces graficas com tk
14 programando em python - interfaces graficas com tk
 
13 programando em python - arquivos
 13   programando em python - arquivos 13   programando em python - arquivos
13 programando em python - arquivos
 
11 programando em python - conjuntos
 11   programando em python - conjuntos 11   programando em python - conjuntos
11 programando em python - conjuntos
 
04 programando em python - listas
 04   programando em python - listas 04   programando em python - listas
04 programando em python - listas
 
Python for-unix-and-linux-system-administration
Python for-unix-and-linux-system-administrationPython for-unix-and-linux-system-administration
Python for-unix-and-linux-system-administration
 

Último

Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
sh5kpmr7w7
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 

Último (20)

M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdf
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 

06 programando em python - dicionarios

  • 2. Dicionários  São estruturas de dados que implementam mapeamentos  Um mapeamento é uma coleção de associações entre  pares de valores  O primeiro elemento do par é chamado de chave e o outro de  conteúdo  De certa forma, um mapeamento é uma generalização da  idéia de acessar dados por índices, exceto que num  mapeamento os índices (ou chaves) podem ser de  qualquer tipo imutável
  • 3. Chaves vs. Índices  Considere que queiramos representar um caderno de  telefones  Uma solução é ter uma lista de nomes e outra de telefones   Telefone de nome[i] armazenado em telefone[i] Acrescentar “Joao” com telefone “20122232”: nome+=  “Joao” telefone+=“20122232” Para encontrar o telefone de “Joao”: Tel = telefone[nome.index[“Joao”]]  Dicionários tornam isso mais fácil e eficiente telefone[“Joao”] = “20122232” Tel = telefone[“Joao”]
  • 4. Criando dicionários  Uma constante do tipo dicionário é escrita  { chave1:conteúdo1, ... chaveN:conteúdoN}  Uma variável do tipo dicionário pode ser “indexada” da  maneira habitual, isto é, usando colchetes  O conteúdo associado a uma chave pode ser alterado  atribuindo­se àquela posição do dicionário  Novos valores podem ser acrescentados a um dicionário  fazendo atribuição a uma chave ainda não definida  Não há ordem definida entre os pares chave/conteúdo de  um dicionário
  • 5. Exemplo >>> dic = {"joao":100,"maria":150} >>> dic["joao"] 100 >>> dic["maria"] 150 >>> dic["pedro"] = 10 >>> dic {'pedro': 10, 'joao': 100, 'maria': 150} >>> dic = {'joao': 100, 'maria': 150, 'pedro': 10} >>> dic {'pedro': 10, 'joao': 100, 'maria': 150}
  • 6. Dicionários não têm ordem  As chaves dos dicionários não são armazenadas em  qualquer ordem específica   Na verdade, dicionários são implementados por tabelas de  espalhamento (Hash Tables) A falta de ordem é proposital  Diferentemente de listas, atribuir a um elemento de um  dicionário não requer que a posição exista previamente X = [] X [10] = 5 . . . Y = {} Y [10] = 5 # ERRO! # OK!
  • 7. A função dict  A função dict é usada para construir dicionários e requer  como parâmetros:   Uma lista de tuplas, cada uma com um par chave/conteúdo,  ou Uma seqüência de itens no formato chave=valor  Nesse caso, as chaves têm que ser strings, mas são escritas sem  aspas
  • 8. Exemplo >>> d = dict([(1,2),('chave','conteudo')]) >>> d[1] 2 >>> d['chave'] 'conteudo' >>> d = dict(x=1,y=2) >>> d['x'] 1 >>> d = dict(1=2,3=4) SyntaxError: keyword can't be an expression
  • 9. Formatando com Dicionários  O operador de formatação quando aplicado a dicionários  requer que os valores das chaves apareçam entre  parênteses antes do código de formatação   O conteúdo armazenado no dicionário sob aquela chave é  substituído na string de formatação Ex: >>> dic = { "Joao":"a", "Maria":"b" } >>> s = "%(Joao)s e %(Maria)s" >>> s % dic 'a e b'
  • 10. Método clear  clear()  Remove todos os elementos do dicionário  Ex.: >>> x = { "Joao":"a", "Maria":"b" } >>> y = x >>> x.clear() >>> print x,y {} {}  Diferente de atribuir {} à variável: >>> x = { "Joao":"a", "Maria":"b" } >>> y = x >>> x = {} >>> print x,y {} {'Joao': 'a', 'Maria': 'b'}
  • 11. Método copy  copy()  Retorna um outro dicionário com os mesmos pares  chave/conteúdo  Observe que os conteúdos não são cópias, mas apenas  referências para os mesmos valores >>> x = {"Joao":[1,2], "Maria":[3,4]} >>> y = x.copy() >>> y ["Pedro"]=[5,6] >>> x ["Joao"] += [3] >>> print x {'Joao': [1, 2, 3], 'Maria': [3, 4]} >>> print y {'Pedro': [5, 6], 'Joao': [1, 2, 3], 'Maria': [3, 4]}
  • 12. Método fromkeys  fromkeys(lista,valor)  Retorna um novo dicionário cujas chaves são os elementos  de lista e cujos valores são todos iguais a valor  Se valor não for especificado, o default é None >>> {}.fromkeys([2,3]) {2: None, 3: None} # Podemos usar o nome da classe ao invés # de um objeto: >>> dict.fromkeys(["Joao","Maria"],0) {'Joao': 0, 'Maria': 0}
  • 13. Método get  get(chave,valor)  Obtém o conteúdo de chave  Não causa erro caso chave não exista: retorna valor  Se valor não for especificado chaves inexistentes retornam  None  Ex.: >>> dic = { "Joao":"a", "Maria":"b" } >>> dic.get("Pedro") >>> print dic.get("Pedro") None >>> print dic.get("Joao") a >>> print dic.get("Carlos","N/A") N/A
  • 14. Método has_key  has_key(chave)  dic.has_key(chave) é o mesmo que chave in dic  Ex.: >>> dic = { "Joao":"a", "Maria":"b" } >>> dic.has_key("Joao") True >>> dic.has_key("Pedro") False
  • 15. Métodos items, keys e values  items() retorna uma lista com todos os pares  chave/conteúdo do dicionário  keys() retorna uma lista com todas as chaves do  dicionário  values() retorna uma lista com todos os valores do  dicionário  Ex.: >>> dic.items() [('Joao', 'a'), ('Maria', 'b')] >>> dic.keys() ['Joao', 'Maria'] >>> dic.values() ['a', 'b']
  • 16. Método pop  pop (chave)  Obtém o valor correspondente a chave e  remove o par  chave/valor do dicionário  Ex.: >>> d = {'x': 1, 'y': 2} >>> d.pop('x') 1 >>> d {'y': 2}
  • 17. Método popitem  popitem()  Retorna e remove um par chave/valor aleatório do  dicionário  Pode ser usado para iterar sobre todos os elementos do  dicionário  Ex: >>> d {'url': 'http://www.python.org', 'spam': 0, 'title': 'Python Web Site'} >>> d.popitem() ('url', 'http://www.python.org') >>> d {'spam': 0, 'title': 'Python Web Site'}
  • 18. Método update  update(dic)  Atualiza um dicionário com os elementos de outro  Os itens em dic são adicionados um a um ao dicionário  original  É possível usar a mesma sintaxe da função dict para  especificar dic  Ex.: >>> x = {"a":1,"b":2,"c":3} >>> y = {"z":9,"b":7} >>> x.update(y) >>> x {'a': 1, 'c': 3, 'b': 7, 'z': 9} >>> x.update(a=7,c="xxx") >>> x {'a': 7, 'c': 'xxx', 'b': 7, 'z': 9}