Antes de mais nada...

Álvaro Justen, prazer!

{twitter.com, github.com, youtube.com }/turicas
turicas.info
alvaro@CursoDeArduino.com.br


www.CursoDeArduino.com.br


emap.fgv.br

As comunidades de software do Rio de Janeiro

E vocês?

Python developers are hash-addicted.

Tipos básicos

i = 42 # inteiro

f = 3.14 # ponto flutuante

c = 1.5 + 5.3j # complexo!

s = "Fortal" # string

t = (1, "python") # tupla

l = [1, 2.3, "ab", [1, "b"]] # lista

d = {'a': 1, 2: 'b',
     (1, 2): [3, 4]} # dicionário

Dicionários

Dicionários - uso

>>> my_dict = {}
>>> my_dict['key'] = 'value'
>>> my_dict['key2'] = 42
>>> 'key' in my_dict
True
>>> my_dict.keys()
['key2', 'key']
>>> my_dict['key']
'value'
>>> for key, value in my_dict.items(): print key, value
key2 42
key value
>>> del my_dict['key']
>>> my_dict.values()
[42]
>>> my_dict = {k: v for k, v in zip('123', '456')}
        

Exemplo: indexador

Índice invertido: exemplo

Talk is cheap, show me the code!
Linus Torvalds


Problema: uso de memória

Dicionários - uso de memória


dict size per pair

Dicionários - uso de memória (2)

dict size per pair


Problema: não é persistente

Possível solução: gdbm

>>> import gdbm  # standard library
>>> persistent_dict = gdbm.open('test.dbm', 'c')

>>> persistent_dict['python'] = 'rules'

>>> persistent_dict[u'Álvaro'] = 'Turicas'
TypeError: gdbm mappings have string
indices only

>>> persistent_dict['Turicas'] = u'Álvaro'
TypeError: gdbm mappings have string
elements only
        

Possível solução: shelve

Problemas: acesso simultâneo, escalabilidade

Possível solução: pymongo


Problema: interface :-/

Solução: mongodict


Outras soluções?

dicts on steroids

vortaroj logo
A Python dict that speaks many languages

vortaroj





2 a 4 de outubro de 2013, Brasília/DF

PyBr9

?

{twitter.com, github.com, youtube.com }/turicas
turicas.info
alvaro@CursoDeArduino.com.br
www.CursoDeArduino.com.br