Buscar

aula10_teorica

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Computação I - Python
Aula 10 - Teórica: Estrutura de Dados - Dicionário
João C. P. da Silva
Carla A. D. M. Delgado
Ana Luisa Duboc
Dept. Ciência da Computação - UFRJ
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 1 / 16
http://lattes.cnpq.br/9413102524215939
http://lattes.cnpq.br/3831909651244142
http://lattes.cnpq.br/3831909651244142
Dicionário
Considere que você precisa fazer uma função que guarde o nome e o
telefone de seus amigos. Sua função também deve permitir a consulta aos
telefones das pessoas.
Como guardar estas informações (nome e telefone)?
Como recuperar o telefone de uma dada pessoa?
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 2 / 16
Dicionário
Dicionários são estruturas para armazenar dados. Não são sequências como strings,
listas e tuplas.
São mapeamentos formados por pares de chave − valor .
Chave1 → Conteúdo1
Chave2 → Conteúdo2
Chave3 → Conteúdo3
· · ·
Representam uma coleção não ordenada de valores onde cada valor é referenciado
através de sua chave.
Notação: { chave1: conteúdo1, chave2: conteúdo2, ..., chaveN: conteúdoN }
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 3 / 16
Dicionário
Dicionários são mapeamentos formados por pares de chave − valor .
As chaves funcionam como os ı́ndices de uma lista
Chave1 → Conteúdo1
Chave2 → Conteúdo2
Chave3 → Conteúdo3
· · ·
As chaves de dicionários são dados de tipo imutável, geralmente strings (podem ser
tuplas ou tipos numéricos).
Os valores em um dicionário são dados quaisquer.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 4 / 16
Dicionário
1 >>> Caderno = {” Ca r l o s ” : ”2222−2223 ” , ”Andre” : ”2121−9092 ” , ” Jose ” : ”9999−9291 ”}
2
3 >>> Caderno [ ”Andre” ]
4 ’ 2121−9092 ’
5
6 >>>Caderno [ ” Jo rge ” ]
7 Traceback (most r e c e n t c a l l l a s t ) :
8 F i l e ”<p y s h e l l#8>” , l i n e 1 , i n <module>
9 Caderno [ ” Jo rge ” ]
10 KeyError : ’ Jo rge ’
11
12 >>> ” Jorge” i n Caderno
13 Fa l s e
14
15 >>> l e n ( Caderno )
16 3
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 5 / 16
Dicionário
Podemos usar a função dict para definir dicionários:
Lista de pares (chave,valor):
Caderno = dict([(”Carlos”,”2222-2223”),(”André”,”2121-9992”),
(”José”,”9999-9291”)])
Sequência de itens no formato chave=valor:
Caderno = dict(Andre=”2121-9992”, Jose=”9999-9291”,
Carlos=”2222-2223”)
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 6 / 16
Dicionário
1 >>> Caderno = {” Ca r l o s ” : ”2222−2223 ” , ”Andre” : ”2121−9092 ” , ” Jose ” : ”9999−9291 ”}
2
3 >>> Caderno [ ” Jose ” ]
4 ’ 9999−9291 ’
5
6 >>>Caderno [ ” Jose ” ] = ”8799−0405 ”
7
8 >>>Caderno [ ” Jose ” ]
9 ’ 8799−0405 ’
Dicionários são mutáveis. Mesma sintaxe da inserção! Não é inserida outra chave com o
mesmo nome e valor diferente, pois chaves são únicas.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 7 / 16
Dicionário
1 >>> Caderno = {” Ca r l o s ” : ”2222−2223 ” , ”Andre” : ”2121−9092 ” , ” Jose ” : ”9999−9291 ”}
2
3 >>> ” Jorge” i n Caderno
4 Fa l s e
5
6 >>>Caderno [ ” Jo rge ” ] = ”8586−9091 ”
7
8 >>>Caderno [ ” Jo rge ” ]
9 ’ 8586−9091 ’
10
11 >>>Caderno
12 { ’ Andre ’ : ’ 2121−9092 ’ , ’ Jo rge ’ : ’ 8586−9091 ’ , ’ Jose ’ : ’ 8799−0405 ’ ,
13 ’ C a r l o s ’ : ’ 2222−2223 ’}
Para adicionar um novo par chave:valor
Perceba que, diferentemente de listas, atribuir a um elemento de um dicionário não requer
que uma posição exista previamente.
O dicionário não fornece garantia de que as chaves estarão ordenadas, mas a ordem em
que os elementos aparecem não é importante, pois os valores são acessados somente
através de suas respectivas chaves, e não de suas posições.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 8 / 16
Manipulação de Dicionário
Como saber quais são as chaves e os valores de um dicionário?
dict.keys(<dicionário>): retorna a lista com todas as chaves do
dicionário passado como parâmetro.
dict.values(<dicionário>): retorna a lista com todos os valores do
dicionário passado como parâmetro.
1 >>> meses = {” j a n e i r o ” : 31 , ” f e v e r e i r o ” : 28 , ”marco” : 31 , ” a b r i l ” : 30 , ”maio ” : 31 ,
2 ” junho ” : 30 , ” j u l h o ” : 31 , ” agos to ” : 31 , ” se tembro ” : 30 , ” outubro ” : 31 , ”novembro ” : 31 ,
3 ”dezembro” :31}
4
5 >>> l i s t ( d i c t . k e y s ( meses ) )
6 [ ’ novembro ’ , ’ marco ’ , ’ j u l h o ’ , ’ agos to ’ , ’ f e v e r e i r o ’ , ’ junho ’ , ’ dezembro ’ , ’ j a n e i r o ’ ,
7 ’ a b r i l ’ , ’ maio ’ , ’ outubro ’ , ’ se tembro ’ ]
8
9 >>> l i s t ( d i c t . v a l u e s ( meses ) )
10 [31 , 31 , 31 , 31 , 28 , 30 , 31 , 31 , 30 , 31 , 31 , 30 ]
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 9 / 16
Manipulação de Dicionário
dict.items(<dicionário>): retorna uma lista com todos os pares
(chave, conteúdo) do dicionário passado como parâmetro.
1 >>> meses = {” j a n e i r o ” : 31 , ” f e v e r e i r o ” : 28 , ”marco” : 31 , ” a b r i l ” : 30 , ”maio ” : 31 ,
2 ” junho ” : 30 , ” j u l h o ” : 31 , ” agos to ” : 31 , ” se tembro ” : 30 , ” outubro ” : 31 ,
3 ”novembro ” : 31 , ”dezembro” :31}
4
5 >>> l i s t ( d i c t . i t ems ( meses ) )
6 [ ( ’ novembro ’ ,31) , ( ’ marco ’ ,31) , ( ’ j u l h o ’ ,31) , ( ’ agos to ’ ,31) , ( ’ f e v e r e i r o ’ ,28) ,
7 ( ’ junho ’ ,30) , ( ’ dezembro ’ ,31) , ( ’ j a n e i r o ’ ,31) , ( ’ a b r i l ’ , 30) , ( ’ maio ’ ,31) ,
8 ( ’ outubro ’ ,31) , ( ’ se tembro ’ ,30) ]
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 10 / 16
Manipulação de Dicionário
dict.get(<dicionário>,chave,[valor de retorno]): Retorna o valor associado com a chave.
Se chave não está no dicionário e se o valor de retorno é especificado, retorna o valor
especificado.
Se o valor de retorno não é especificado, retorna None.
1 >>> meses = {” j a n e i r o ” : 31 , ” f e v e r e i r o ” : 28 , ”marco” : 31 , ” a b r i l ” : 30 , ”maio ” : 31 ,
2 ” junho ” : 30 , ” j u l h o ” : 31 , ” agos to ” : 31 , ” se tembro ” : 30 , ” outubro ” : 31 , ”novembro ” : 31 ,
3 ”dezembro” :31}
4
5 >>> d i c t . ge t ( meses , ”marco” )
6 31
7
8 >>> d i c t . ge t ( meses , ”marco” , ” Va l o r nao encont r ado” )
9 31
10
11 >>> d i c t . ge t ( meses , ”Marco” )
12 None
13
14 >>> d i c t . ge t ( meses , ”Marco” , ” Va l o r nao encont r ado” )
15 ” Va l o r nao encont r ado”
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 11 / 16
Manipulação de Dicionário
dict.clear(<dicionário>): apaga todos os itens do dicionário.
dict.copy(<dicionário>): cria e retorna uma cópia do dicionário.
1 >>> meses = {” j a n e i r o ” : 31 , ” f e v e r e i r o ” :28}
2
3 >>> novo = d i c t . copy ( meses )
4
5 >>> novo
6 { ’ f e v e r e i r o ’ : 28 , ’ j a n e i r o ’ : 31}
7
8 >>> novo [ ”maio ” ] = 31
9
10 >>> novo
11 { ’ maio ’ : 31 , ’ f e v e r e i r o ’ : 28 , ’ j a n e i r o ’ : 31}
12
13 >>> meses
14 { ’ f e v e r e i r o ’ : 28 , ’ j a n e i r o ’ : 31}
15
16 >>> d i c t . c l e a r ( meses )
17
18 >>> meses
19 {}
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 12 / 16
Manipulação de Dicionário
dict.copy(<dicionário>): cria e retorna uma cópia do dicionário. Os elementos
mutáveis (listas ou dicionários) do novo dicionário são apenas referências aos
elementos do dicionário original.
1 >>> meses = {” j a n e i r o ” : 30 , ” f e v e r e i r o ” : [ 2 8 , 2 9 ]}
2 >>> novo = d i c t . copy ( meses )
3 >>> novo
4 { ’ f e v e r e i r o ’ : [ 2 8 , 2 9 ] , ’ j a n e i r o ’ : 30}
5 >>> novo [ ”maio ”]=31
6 >>> novo
7 { ’ maio ’ : 31 , ’ f e v e r e i r o ’ : [ 2 8 , 2 9 ] , ’ j a n e i r o ’ : 30}
8 >>> meses
9 { ’ f e v e r e i r o ’ : [ 2 8 , 2 9 ] , ’ j a n e i r o ’ : 30}
10 >>> novo [ ” j a n e i r o ” ]=31
11 >>> novo
12 { ’ maio ’ : 31 , ’ f e v e r e i r o ’ : [ 2 8, 2 9 ] , ’ j a n e i r o ’ : 31}
13 >>> meses
14 { ’ f e v e r e i r o ’ : [ 2 8 , 2 9 ] , ’ j a n e i r o ’ : 30}
15 >>> l i s t . pop ( novo [ ” f e v e r e i r o ” ] )
16 29
17 >>> novo
18 { ’ maio ’ : 31 , ’ f e v e r e i r o ’ : [ 2 8 ] , ’ j a n e i r o ’ : 31}
19 >>> meses
20 { ’ f e v e r e i r o ’ : [ 2 8 ] , ’ j a n e i r o ’ : 30}
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 13 / 16
Manipulação de Dicionário
Escreva uma função que receba uma frase como parâmetro e retorne um dicionário,
onde cada chave seja um caracter e seu valor seja o número de vezes que o caracter
aparece na frase lida.
Exemplo: “Os ratos” → {“O”:1, “ “:1, “s”:2, “r”:1, “a”:1, “t”:1,”o”:1}
Faça uma versão usando while e outra usando for.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 14 / 16
Manipulação de Dicionário
Escreva uma função que receba uma frase como parâmetro e retorne um dicionário,
onde cada chave seja um caracter e seu valor seja o número de vezes que o caracter
aparece na frase lida.
Exemplo: “Os ratos” → {“O”:1, “ “:1, “s”:2, “r”:1, “a”:1, “t”:1,”o”:1}
Faça uma versão usando while e outra usando for.
1 de f c r i a d i c i o n a r i o ( f r a s e ) :
2
3 ””” Solucao com wh i l e
4 Parametro de ent r ada : s t r
5 Va l o r de r e t o r n o : d i c ”””
6
7 d i c i o n a r i o = { }
8 i=0
9 wh i l e i < l e n ( f r a s e ) :
10 i f f r a s e [ i ] not i n d i c i o n a r i o :
11 d i c i o n a r i o [ f r a s e [ i ] ] = 1
12 e l s e :
13 d i c i o n a r i o [ f r a s e [ i ] ] += 1
14 i += 1
15 r e t u r n d i c i o n a r i o
1 de f c r i a d i c i o n a r i o ( f r a s e ) :
2
3 ””” Solucao com f o r
4 Parametro de ent r ada : s t r
5 Va l o r de r e t o r n o : d i c ”””
6
7 d i c i o n a r i o = { }
8 f o r c i n f r a s e :
9 i f c not i n d i c i o n a r i o :
10 d i c i o n a r i o [ c ] = 1
11 e l s e :
12 d i c i o n a r i o [ c ] += 1
13 r e t u r n d i c i o n a r i o
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 14 / 16
Manipulação de Dicionário
1. Escreva uma função que transforma uma lista de tuplas em um
dicionário que associa o primeiro componente de cada tupla ao
segundo.
2. Escreva uma função que transforma um dicionário em uma lista de
tuplas, onde as tuplas estão ordenadas pelo primeiro componente.
Lembre-se de list.sort.
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 15 / 16
Autores
João C. P. da Silva Lattes
Carla Delgado Lattes
Ana Luisa Duboc Lattes
Colaboradores
Anamaria Martins Moreira Lattes
Fabio Mascarenhas Lattes
Leonardo de Oliveira Carvalho Lattes
Charles Figueiredo de Barros Lattes
Fabŕıcio Firmino de Faria Lattes
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 16 / 16
http://lattes.cnpq.br/9413102524215939
http://lattes.cnpq.br/3831909651244142
http://lattes.cnpq.br/8362978460368738
http://lattes.cnpq.br/2363575151206774
http://lattes.cnpq.br/2273723591083358
http://lattes.cnpq.br/3754078390316976
http://lattes.cnpq.br/1853606206364277
http://lattes.cnpq.br/9994062739448952
Computação I - Python
Aula 10 - Teórica: Estrutura de Dados - Dicionário
João C. P. da Silva
Carla A. D. M. Delgado
Ana Luisa Duboc
Dept. Ciência da Computação - UFRJ
http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 10 17 / 16
http://lattes.cnpq.br/9413102524215939
http://lattes.cnpq.br/3831909651244142
http://lattes.cnpq.br/3831909651244142

Continue navegando