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

PDF
Programando em python dicionarios
PDF
06 programando em python - dicionarios
PDF
Aula 3 - Java Prof.ª Cristiane Fidelix
PDF
07 programando em python - funcoes
PDF
Do REST ao GraphQL com PHP
PDF
PHP Community Summit - Do REST ao GraphQL com PHP
PPTX
Programação aula002
PPTX
NotORM
Programando em python dicionarios
06 programando em python - dicionarios
Aula 3 - Java Prof.ª Cristiane Fidelix
07 programando em python - funcoes
Do REST ao GraphQL com PHP
PHP Community Summit - Do REST ao GraphQL com PHP
Programação aula002
NotORM

Mais procurados (13)

PDF
Python Class
PDF
Aula android 04
PDF
Introducao ao python - Luciana Mota
PDF
Programando em python listas
KEY
PHPubSP Object Calisthenics aplicado ao PHP
PDF
004 programando em python - listas
PDF
Shell Script v0
PPT
PowerShell e Active Directory
PDF
Combatendo code smells em aplicações Java
PDF
Programação Desktop: Revisão Core Java
PDF
PHP 5.3 - Arrays
PDF
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
Python Class
Aula android 04
Introducao ao python - Luciana Mota
Programando em python listas
PHPubSP Object Calisthenics aplicado ao PHP
004 programando em python - listas
Shell Script v0
PowerShell e Active Directory
Combatendo code smells em aplicações Java
Programação Desktop: Revisão Core Java
PHP 5.3 - Arrays
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
Anúncio

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

PPT
006 - Programando em Python - Dicionarios.ppt
PPTX
Aula 7 - Listas_Dicionarios_Python2.pptx
KEY
Python 02
PPTX
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
PDF
007 programando em python - funcoes
PDF
Linguagem de programação JavaScript.pdf
ODP
Linguagem R
PDF
Slide_Python.pdf
PDF
Orientação a objetos em Python (compacto)
PPTX
Estruturas de dados em Python
PPT
Módulo 1 - Introdução a algoritmos.ppt
PDF
Estruturação de Linguagens de Programação (Pascal e C++)
PDF
Minicurso de Django - Desenvolvimento ágil web com Django e Python
PPT
Python2.5.ppt
PDF
Vetores e Matrizes.pdf
PDF
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
PPT
Lambda Expressions
PPTX
PHP Arrays - Básico | Certificação
ODP
Pymordida0 Semana de computação da SOCIESC - 2008/10
PPT
Java básico - Módulo 06: Array
006 - Programando em Python - Dicionarios.ppt
Aula 7 - Listas_Dicionarios_Python2.pptx
Python 02
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
007 programando em python - funcoes
Linguagem de programação JavaScript.pdf
Linguagem R
Slide_Python.pdf
Orientação a objetos em Python (compacto)
Estruturas de dados em Python
Módulo 1 - Introdução a algoritmos.ppt
Estruturação de Linguagens de Programação (Pascal e C++)
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Python2.5.ppt
Vetores e Matrizes.pdf
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Lambda Expressions
PHP Arrays - Básico | Certificação
Pymordida0 Semana de computação da SOCIESC - 2008/10
Java básico - Módulo 06: Array
Anúncio

Último (11)

PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Design - Introdução a Gestalt e teoria das formas
PPTX
Eng. Software - pontos essenciais para o início
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Utilizando code blockes por andre backes
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Manejo integrado de pragas na cultura do algodão
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Tipos de servidor em redes de computador.pptx
Design - Introdução a Gestalt e teoria das formas
Eng. Software - pontos essenciais para o início
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Arquitetura de computadores - Memórias Secundárias
Utilizando code blockes por andre backes
Viasol Energia Solar -Soluções para geração e economia de energia
Manejo integrado de pragas na cultura do algodão
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Proposta de Implementação de uma Rede de Computador Cabeada.pptx

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}