SlideShare uma empresa Scribd logo
Claudio Esperança
Python:
Dicionários
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 # ERRO!
. . .
Y = {}
Y [10] = 5 # 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}

Mais conteúdo relacionado

Mais procurados

Python Class
Python ClassPython Class
Python Class
Romualdo Andre
 
Aula android 04
Aula android 04Aula android 04
Aula android 04
Carlos Cavalcanti
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
lucianacmota
 
Programando em python listas
Programando em python   listasProgramando em python   listas
Programando em python listas
samuelthiago
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHP
Guilherme Blanco
 
004 programando em python - listas
004   programando em python - listas004   programando em python - listas
004 programando em python - listas
Leandro Barbosa
 
Shell Script v0
Shell Script v0Shell Script v0
Shell Script v0
PeslPinguim
 
PowerShell e Active Directory
PowerShell e Active DirectoryPowerShell e Active Directory
PowerShell e Active Directory
Wellington Oliveira
 
Combatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaCombatendo code smells em aplicações Java
Combatendo code smells em aplicações Java
Emmanuel Neri
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core Java
Elaine Cecília Gatto
 
PHP 5.3 - Arrays
PHP 5.3 - ArraysPHP 5.3 - Arrays
PHP 5.3 - Arrays
George Mendonça
 
Grupo2
Grupo2Grupo2
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto AlegreJava 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
Frederico Maia Arantes
 

Mais procurados (13)

Python Class
Python ClassPython Class
Python Class
 
Aula android 04
Aula android 04Aula android 04
Aula android 04
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Programando em python listas
Programando em python   listasProgramando em python   listas
Programando em python listas
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHP
 
004 programando em python - listas
004   programando em python - listas004   programando em python - listas
004 programando em python - listas
 
Shell Script v0
Shell Script v0Shell Script v0
Shell Script v0
 
PowerShell e Active Directory
PowerShell e Active DirectoryPowerShell e Active Directory
PowerShell e Active Directory
 
Combatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaCombatendo code smells em aplicações Java
Combatendo code smells em aplicações Java
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core Java
 
PHP 5.3 - Arrays
PHP 5.3 - ArraysPHP 5.3 - Arrays
PHP 5.3 - Arrays
 
Grupo2
Grupo2Grupo2
Grupo2
 
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto AlegreJava 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
 

Semelhante a Programando em Python : Dicionários

Python 02
Python 02Python 02
Python 02
Bruno Catão
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
Diogo Gomes
 
007 programando em python - funcoes
007   programando em python - funcoes007   programando em python - funcoes
007 programando em python - funcoes
Leandro Barbosa
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
Anderson Sanches
 
Slide_Python.pdf
Slide_Python.pdfSlide_Python.pdf
Slide_Python.pdf
HevertonSCosta
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
Luciano Ramalho
 
Estruturas de dados em Python
Estruturas de dados em PythonEstruturas de dados em Python
Estruturas de dados em Python
Ricardo Paiva
 
Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)
Mauricio Volkweis Astiazara
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Guilherme Garcia
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
wildcat9335
 
Vetores e Matrizes.pdf
Vetores e Matrizes.pdfVetores e Matrizes.pdf
Vetores e Matrizes.pdf
ProfaCristianeMota
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Flávio Ribeiro
 
Lambda Expressions
Lambda ExpressionsLambda Expressions
Lambda Expressions
Charles Fortes
 
PHP Arrays - Básico | Certificação
PHP Arrays - Básico | CertificaçãoPHP Arrays - Básico | Certificação
PHP Arrays - Básico | Certificação
Ricardo de Carvalho
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
Marco Mendes
 
Java básico - Módulo 06: Array
Java básico - Módulo 06: ArrayJava básico - Módulo 06: Array
Java básico - Módulo 06: Array
Professor Samuel Ribeiro
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
Maurício Linhares
 
Desenvolvendo com mongodb
Desenvolvendo com mongodbDesenvolvendo com mongodb
Desenvolvendo com mongodb
Thiago Avelino
 
Ed1
Ed1Ed1
AULA 1 - Classes e Objetos.ppt
AULA 1 - Classes e Objetos.pptAULA 1 - Classes e Objetos.ppt
AULA 1 - Classes e Objetos.ppt
JoberthSilva
 

Semelhante a Programando em Python : Dicionários (20)

Python 02
Python 02Python 02
Python 02
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 
007 programando em python - funcoes
007   programando em python - funcoes007   programando em python - funcoes
007 programando em python - funcoes
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Slide_Python.pdf
Slide_Python.pdfSlide_Python.pdf
Slide_Python.pdf
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Estruturas de dados em Python
Estruturas de dados em PythonEstruturas de dados em Python
Estruturas de dados em Python
 
Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e Python
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Vetores e Matrizes.pdf
Vetores e Matrizes.pdfVetores e Matrizes.pdf
Vetores e Matrizes.pdf
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
 
Lambda Expressions
Lambda ExpressionsLambda Expressions
Lambda Expressions
 
PHP Arrays - Básico | Certificação
PHP Arrays - Básico | CertificaçãoPHP Arrays - Básico | Certificação
PHP Arrays - Básico | Certificação
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
 
Java básico - Módulo 06: Array
Java básico - Módulo 06: ArrayJava básico - Módulo 06: Array
Java básico - Módulo 06: Array
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Desenvolvendo com mongodb
Desenvolvendo com mongodbDesenvolvendo com mongodb
Desenvolvendo com mongodb
 
Ed1
Ed1Ed1
Ed1
 
AULA 1 - Classes e Objetos.ppt
AULA 1 - Classes e Objetos.pptAULA 1 - Classes e Objetos.ppt
AULA 1 - Classes e Objetos.ppt
 

Último

Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 

Último (8)

Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 

Programando em Python : Dicionários

  • 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 # ERRO! . . . Y = {} Y [10] = 5 # 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}