SlideShare uma empresa Scribd logo
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       # 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 (20)

PPTX
NotORM
Tiago Davi
 
PPT
J query javascript para seres humanos
nobios
 
KEY
NoSQL e MongoDB - ETEC
Jefferson Queiroz
 
PDF
Minicurso de jQuery
André Willik Valenti
 
PPT
PowerShell e Active Directory
Wellington Oliveira
 
PPTX
Palestra Novidades da linguagem C# 6
Renato Haddad
 
PDF
Python aula 2
Natã Melo
 
ODP
meetup adopting java8
Filipe Portes
 
PDF
jQuery na Prática!
José Alexandre Macedo
 
PDF
Aula 3 - Java Prof.ª Cristiane Fidelix
Cris Fidelix
 
PDF
python
Leandro Barbosa
 
PDF
Escrevendo plugins JQuery
Zigotto Tecnologia
 
PDF
Lazy Evaluation em Scala
pmatiello
 
PDF
004 programando em python - listas
Leandro Barbosa
 
PPTX
MongoDB
Isaac Garcia
 
PDF
Acesso a banco de dados com JDBC
Eduardo Mendes
 
PDF
Proxy, Man-In-The-Middle e testes
Stanislaw Pusep
 
KEY
SPL Datastructures
Felipe Ribeiro
 
PDF
Aula 12 Relatório - Tabelas
Dalton Martins
 
NotORM
Tiago Davi
 
J query javascript para seres humanos
nobios
 
NoSQL e MongoDB - ETEC
Jefferson Queiroz
 
Minicurso de jQuery
André Willik Valenti
 
PowerShell e Active Directory
Wellington Oliveira
 
Palestra Novidades da linguagem C# 6
Renato Haddad
 
Python aula 2
Natã Melo
 
meetup adopting java8
Filipe Portes
 
jQuery na Prática!
José Alexandre Macedo
 
Aula 3 - Java Prof.ª Cristiane Fidelix
Cris Fidelix
 
Escrevendo plugins JQuery
Zigotto Tecnologia
 
Lazy Evaluation em Scala
pmatiello
 
004 programando em python - listas
Leandro Barbosa
 
MongoDB
Isaac Garcia
 
Acesso a banco de dados com JDBC
Eduardo Mendes
 
Proxy, Man-In-The-Middle e testes
Stanislaw Pusep
 
SPL Datastructures
Felipe Ribeiro
 
Aula 12 Relatório - Tabelas
Dalton Martins
 

Destaque (20)

PDF
O inferno astral de sergio cabral
esquiber
 
PDF
MBA em Planejamento Empresarial
ritumidia
 
PDF
Cap04b
samuelthiago
 
PDF
Estadistica administrativa
Maestros Online
 
PDF
Probabilidad y estadísticas tm
Maestros Online
 
PPTX
Apresentação1
lovebabymenot
 
PPT
Importancia da mata
manibenites
 
PDF
Computación 1 cb09106
Maestros Online
 
PDF
Probabilidad y estadisticas tec nuevo leon
Maestros Online
 
PDF
Introduccion a la carrera so13151
Maestros Online
 
PDF
Investigacion y metodo cientifico
Maestros Online
 
PDF
Metologia pequisa
Marta Elini Borges
 
PDF
Cap01a
samuelthiago
 
PDF
Matematicas i cn09001
Maestros Online
 
PDF
Computacion 1 cb9101 2013
Maestros Online
 
PDF
Matematicas i 09101
Maestros Online
 
PPSX
Censura
Gabriela Mendes
 
PDF
Administracion financiera fz09301
Maestros Online
 
PDF
MScAlastalo
Ari Alastalo
 
PDF
Derecho privado
Maestros Online
 
O inferno astral de sergio cabral
esquiber
 
MBA em Planejamento Empresarial
ritumidia
 
Cap04b
samuelthiago
 
Estadistica administrativa
Maestros Online
 
Probabilidad y estadísticas tm
Maestros Online
 
Apresentação1
lovebabymenot
 
Importancia da mata
manibenites
 
Computación 1 cb09106
Maestros Online
 
Probabilidad y estadisticas tec nuevo leon
Maestros Online
 
Introduccion a la carrera so13151
Maestros Online
 
Investigacion y metodo cientifico
Maestros Online
 
Metologia pequisa
Marta Elini Borges
 
Cap01a
samuelthiago
 
Matematicas i cn09001
Maestros Online
 
Computacion 1 cb9101 2013
Maestros Online
 
Matematicas i 09101
Maestros Online
 
Administracion financiera fz09301
Maestros Online
 
MScAlastalo
Ari Alastalo
 
Derecho privado
Maestros Online
 
Anúncio

Semelhante a Programando em python dicionarios (20)

PDF
Programando em Python : Dicionários
IFRN -campus Ipanguaçu
 
PPT
006 - Programando em Python - Dicionarios.ppt
Rodrigo Costa
 
KEY
Python 02
Bruno Catão
 
ODP
Linguagem R
Anderson Sanches
 
PDF
Orientação a objetos em Python (compacto)
Luciano Ramalho
 
PDF
007 programando em python - funcoes
Leandro Barbosa
 
PPTX
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
Diogo Gomes
 
KEY
Introdução à Linguagem de programação Python
dmmartins
 
PPTX
Estruturas de dados em Python
Ricardo Paiva
 
PDF
jQuery Simplificando o JavaScript
Everaldo Wanderlei Uavniczak
 
KEY
JQuery
Luciano Borges
 
PPTX
Programação web ii aulas 06 e 07
Yuri Bispo
 
PDF
Python Class
Romualdo Andre
 
PDF
Slide_Python.pdf
HevertonSCosta
 
PDF
Minicurso Introdução ao mongoDB SCTI
Bruna Pereira
 
PPTX
MongoDB - Iniciando e Conhecendo
Edemilson Gonçalves
 
KEY
NoSQL e MongoDB
Jefferson Queiroz
 
PDF
Programação Web com PHP 7.x
Norton Guimarães
 
PDF
Linguagem de programação JavaScript.pdf
Cleber Cabral
 
PDF
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Loiane Groner
 
Programando em Python : Dicionários
IFRN -campus Ipanguaçu
 
006 - Programando em Python - Dicionarios.ppt
Rodrigo Costa
 
Python 02
Bruno Catão
 
Linguagem R
Anderson Sanches
 
Orientação a objetos em Python (compacto)
Luciano Ramalho
 
007 programando em python - funcoes
Leandro Barbosa
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
Diogo Gomes
 
Introdução à Linguagem de programação Python
dmmartins
 
Estruturas de dados em Python
Ricardo Paiva
 
jQuery Simplificando o JavaScript
Everaldo Wanderlei Uavniczak
 
Programação web ii aulas 06 e 07
Yuri Bispo
 
Python Class
Romualdo Andre
 
Slide_Python.pdf
HevertonSCosta
 
Minicurso Introdução ao mongoDB SCTI
Bruna Pereira
 
MongoDB - Iniciando e Conhecendo
Edemilson Gonçalves
 
NoSQL e MongoDB
Jefferson Queiroz
 
Programação Web com PHP 7.x
Norton Guimarães
 
Linguagem de programação JavaScript.pdf
Cleber Cabral
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Loiane Groner
 
Anúncio

Mais de samuelthiago (20)

PPTX
Eclipse i (1)
samuelthiago
 
PPTX
Html básico
samuelthiago
 
PPTX
Interface grafica em_java_parte_v
samuelthiago
 
PPTX
Interface grafica em_java_parte_iv
samuelthiago
 
PPTX
Interface grafica em_java_parte_iii
samuelthiago
 
PPTX
Interface grafica em_java_parte_ii
samuelthiago
 
PPTX
Interface grafica em_java_parte_i
samuelthiago
 
PPTX
Poo interacao entre_objetos_blue_j_ii
samuelthiago
 
PPTX
Introducao a poo_com_blue_j
samuelthiago
 
PPT
Projeto calculadora em_java
samuelthiago
 
PPT
Introducao a poo_com_blue_j
samuelthiago
 
PDF
01 02 introdução aos bancos de dados (slides)
samuelthiago
 
PDF
Java 08
samuelthiago
 
PDF
Java 07
samuelthiago
 
PDF
Java 06
samuelthiago
 
PDF
Java 05
samuelthiago
 
PDF
Java 04
samuelthiago
 
PDF
Java 03
samuelthiago
 
PDF
Java 02
samuelthiago
 
PDF
Java 01
samuelthiago
 
Eclipse i (1)
samuelthiago
 
Html básico
samuelthiago
 
Interface grafica em_java_parte_v
samuelthiago
 
Interface grafica em_java_parte_iv
samuelthiago
 
Interface grafica em_java_parte_iii
samuelthiago
 
Interface grafica em_java_parte_ii
samuelthiago
 
Interface grafica em_java_parte_i
samuelthiago
 
Poo interacao entre_objetos_blue_j_ii
samuelthiago
 
Introducao a poo_com_blue_j
samuelthiago
 
Projeto calculadora em_java
samuelthiago
 
Introducao a poo_com_blue_j
samuelthiago
 
01 02 introdução aos bancos de dados (slides)
samuelthiago
 
Java 08
samuelthiago
 
Java 07
samuelthiago
 
Java 06
samuelthiago
 
Java 05
samuelthiago
 
Java 04
samuelthiago
 
Java 03
samuelthiago
 
Java 02
samuelthiago
 
Java 01
samuelthiago
 

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 # 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}