Professional Documents
Culture Documents
PI VBN Introdu c ao Dicion arios como um conjunto de contadores Ciclos e dicion arios Pesquisa inversa Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
Introdu c ao
PI VBN
Introdu c ao Dicion arios como um conjunto de contadores Ciclos e dicion arios Pesquisa inversa Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
Um dicion ario e uma atribui c ao (mapping ) entre chaves (keys ) e um conjunto de valores (values ). Uma associa c ao key value e por vezes designada por item A fun c ao dict cria um novo dicion ario sem items
Exemplo
>>> eng2sp = dict() >>> print(eng2sp) {} >>> eng2sp[one] = uno >>> print (eng2sp) { one: uno }
1.2
Exemplo
Introdu c ao
>>> eng2sp = {one:uno, two:dos, three:tres} >>> print (eng2sp) {three: uno >>> print eng2sp[four] KeyError: >>> len(eng2sp) 3 >>> one in eng2sp True >>> uno in eng2sp False four tres, two: dos, one: uno} >>> print (eng2sp[one])
Dicion arios como um conjunto de contadores Ciclos e dicion arios Pesquisa inversa Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
1.3
Exemplo
Pesquisa inversa Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
>>> eng2sp = {one:uno, two:dos, three:tres} >>> vals = eng2sp.values() >>> uno in vals True >>> print(vals) dict values([tres, dos, uno])
1.4
Considere que pretendemos fazer uma fun c ao que recebe uma string e conta o n umero de vezes que cada letra ocorre na string. Solu co es? Dependem da estrutura de dadosutilizada:
1 2 3
Pesquisa inversa Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
Utilizando 26 vari aveis, uma por cada letra do alfabeto. Utilizando listas. Ver a fun c ao ord Utilizando dicion arios.
1.5
Histograma
PI VBN Introdu c ao
Exemplo
Dicion arios como um conjunto de contadores Ciclos e dicion arios Pesquisa inversa Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
1.6
Pesquisa inversa Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
1.7
Pesquisa inversa
PI VBN Introdu c ao Dicion arios como um conjunto de contadores Ciclos e dicion arios Pesquisa inversa Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
lookup : dada uma chave e um dicion ario, podemos facilmente obter o valor correspondente Mas como podemos proceder se tivermos o dicion ario e o valor e pretendermos obter a chave?
Podemos ter mais que uma chave para tal valor! N ao existe nenhum m etodo espec co para tal. Por isso, temos de fazer uma pesquisa inversa Exemplo (Reverse Lookup)
1.8
>>> h = histogram(parrot) >>> k = reverse lookup(h, 2) >>> k r >>> k = reverse lookup(h, 3) Traceback (most recent call last): File stdin>", line 1, in ? File stdin>", line 5, in reverse lookup ValueError
1.9
Raise
PI VBN Introdu c ao Dicion arios como um conjunto de contadores Ciclos e dicion arios
A instru c ao raise tem um argumento opcional que pode ser utilizado para detalhar a mensagem de erro. Por exemplo, podemos fazer: >>> raise ValueError(value does not appear in the dictionary) Traceback (most recent call last): File "<stdin>", line 1, in ? ValueError: value does not appear in the dictionary
Pesquisa inversa Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
1.10
def i n v e r t d i c t ( d ) : inv = dict () f o r key in d : v a l = d [ key ] i f val in inv : i n v [ v a l ] . append ( k e y ) else : i n v [ v a l ] = [ key ] return inv
Dicion arios como um conjunto de contadores Ciclos e dicion arios Pesquisa inversa Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
Exemplo
>>> h = histogram(parrot) >>> inv h = invert dict(h) >>> inv h {1: [a, p, t, o], 2: [r]}
1.11
Exemplo
>>> t = [1, 2, 3] >>> d = dict() >>> d[t] = oops Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: list
Deni c ao (Hash)
Uma fun c ao de hash e uma fun c ao que recebe um valor (de qualquer tipo) e devolve um inteiro.
1.12
Memoization
PI VBN Introdu c ao Dicion arios como um conjunto de contadores
Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
1.13
Resumidamente um grafo e como um conjunto de pontos (n os ) ligados por segmentos de recta (arestas ). Em grafos dirigidos, as arestas s ao direccionadas e setas. Existem imensos algoritmo de grafos para:
descobrir o caminho entre dois n os encontrar ciclos num grafo encontrar um caminho que passe por todos os n os
Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
1.15
Exemplo
grafo = {A: B: C: D: E: F:
1.16
Pesquisando caminhos
PI VBN Introdu c ao Dicion arios como um conjunto de contadores Ciclos e dicion arios Pesquisa inversa Dicion arios e listas Memoization Inteiros Long Utilizando dicion arios para representar grafos
Exemplo
d e f f i n d p a t h ( graph , s t a r t , end , p a t h = [ ] ) : path = path + [ s t a r t ] i f s t a r t == end : r e t u r n path i f n ot ( s t a r t i n g r a p h ) : r e t u r n None f o r node i n g r a p h [ s t a r t ] : i f node no t i n p a t h : newpath = f i n d p a t h ( graph , node , end , p a t h ) i f newpath : r e t u r n newpath r e t u r n None
1.17
Utilizando a pesquisa
PI VBN Introdu c ao Dicion arios como um conjunto de contadores Ciclos e dicion arios Pesquisa inversa
Exemplo
>>> print (find path(grafo, A, D)) [A, B, C, D] Mais informa c ao sobre grafos e Python http://www.python.org/doc/essays/graphs.html
1.18