Document Actions
Send this page to somebody Print this page
Parte 2

Diccionarios

Definen una relación uno-a-uno entre claves y valores
  • Similar a un hash en Perl
  • Similar a una instancia de Hashtable en Java
  • Similar a Scripting.Dictionary en Visual Basic
>>> params = {"server":"myserver", "database":"master","uid":"sa","pwd":"secret"  }
>>> params
{'pwd': 'secret', 'datatabase': 'master', 'uid': 'sa', 'server': 'myserver'}
>>> params['pwd']
'secret'
>>> params['database']
'master'
>>> params['sa']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'sa'

Modificando diccionarios

>>> params
{'pwd': 'secret', 'database': 'master', 'uid': 'sa', 'server': 'myserver'}
>>> params['database'] = 'localhost'
>>> params
{'pwd': 'secret', 'database': 'localhost', 'uid': 'sa', 'server': 'myserver'}
>>> dic = {}
>>> dic['algo'] = 'uno'
>>> dic['Algo'] = 'dos'
>>> dic[3] = 'cinco'
>>> dic
{3: 'cinco', 'algo': 'uno', 'Algo': 'dos'}

Borrando items de diccionarios

>>> del dic[3]
>>> dic
{'algo': 'uno', 'Algo': 'dos'}

Mas sobre diccionarios


Listas

Secuencia ordenada de items que puede ser modificada (mutable)
  • Similar a arrays en Visual Basic
  • Similar a datastore en Powerbuilder
  • Similar a Array en Perl (pero sin @)
  • Mas que un Array en Java, mas bien similar a ArrayList

>>> li = ["a", "b", "mpilgrim", "z", "example"]
>>> li
['a', 'b', 'mpilgrim', 'z', 'example']
>>> li[0]
'a'
>>> li[4]
'example'

Indices negativos

>>> li
['a', 'b', 'mpilgrim', 'z', 'example']
>>> li[-1] 1
'example'
>>> li[-3] 2
'mpilgrim'

Particiones o slices

>>> li
['a', 'b', 'mpilgrim', 'z', 'example']
>>> li[1:3]
['b', 'mpilgrim']
>>> li[1:-1]
['b', 'mpilgrim', 'z']
>>> li[0:3]  3
['a', 'b', 'mpilgrim']
>>> li
['a', 'b', 'mpilgrim', 'z', 'example']
>>> li[:3] 1
['a', 'b', 'mpilgrim']
>>> li[3:] 2 3
['z', 'example']
>>> li[:]  4
['a', 'b', 'mpilgrim', 'z', 'example']

Agregando elementos a listas

>>> li
['a', 'b', 'mpilgrim', 'z', 'example']
>>> li.append("new")             
>>> li
['a', 'b', 'mpilgrim', 'z', 'example', 'new']
>>> li.insert(2, "new")           
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new']
>>> li.extend(["two", "elements"])
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']

Búsquedas en listas

>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
>>> li.index("example")
5
>>> li.index("new")
2
>>> li.index("c")      
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
ValueError: list.index(x): x not in list
>>> "c" in li          
0

Borrando elementos de listas

>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
>>> li.remove("z")  
>>> li
['a', 'b', 'new', 'mpilgrim', 'example', 'new', 'two', 'elements']
>>> li.remove("new")
>>> li
['a', 'b', 'mpilgrim', 'example', 'new', 'two', 'elements']
>>> li.remove("c")  
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
ValueError: list.remove(x): x not in list
>>> li.pop()        
'elements'
>>> li
['a', 'b', 'mpilgrim', 'example', 'new', 'two']

Operaciones de Listas

>>> li = ['a', 'b', 'mpilgrim']
>>> li = li + ['example', 'new']
>>> li
['a', 'b', 'mpilgrim', 'example', 'new']
>>> li += ['two']               
>>> li
['a', 'b', 'mpilgrim', 'example', 'new', 'two']
>>> li = [1, 2] * 3             
>>> li
[1, 2, 1, 2, 1, 2]

Mas sobre Listas


Tuplas

Las tuplas son una lista inmutable. No puede ser cambiada una vez creada.
>>> t = ("a", "b", "mpilgrim", "z", "example")
>>> t
('a', 'b', 'mpilgrim', 'z', 'example')
>>> t[0]                                     
'a'
>>> t[-1]                                     
'example'
>>> t[1:3]                                    
('b', 'mpilgrim')

Las tuplas no tienen métodos

>>> t
('a', 'b', 'mpilgrim', 'z', 'example')
>>> t.append("new")   
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'append'
>>> t.remove("z")     
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'remove'
>>> t.index("example")
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'index'
>>> "z" in t          
1

Mas sobre tuplas


Variables

Python posee variables locales y globales como todo lenguaje. Aunque no necesita declaración explicita.
if __name__ == "__main__":
myParams = {"server":"mpilgrim", \
"database":"master", \
"uid":"sa", \
"pwd":"secret" \
}

>>> x
Traceback (innermost last):
File "<interactive input>", line 1, in ?
NameError: There is no variable named 'x'
>>> x = 1
>>> x
1

Asignación múltiple

>>> v = ('a', 'b', 'e')
>>> (x, y, z) = v 1
>>> x
'a'
>>> y
'b'
>>> z
'e'
>>> range(7)                                                                    
[0, 1, 2, 3, 4, 5, 6]
>>> (LUNES, MARTES, MIERCOLES, JUEVES, VIERNES, SABADO, DOMINGO) = range(7)
>>> LUNES                                                                    
0
>>> MARTES
1
>>> DOMINGO
6

Formato de Strings

>>> k = "uid"
>>> v = "sa"
>>> "%s=%s" % (k, v) 1
'uid=sa'
>>> uid = "sa"
>>> pwd = "secret"
>>> print pwd + " is not a good password for " + uid
secret is not a good password for sa
>>> print "%s is not a good password for %s" % (pwd, uid)
secret is not a good password for sa
>>> userCount = 6
>>> print "Users connected: %d" % (userCount, )
Users connected: 6
>>> print "Users connected: " + userCount
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
TypeError: cannot add type "int" to string

Listas por comprensión

>>> li = [1, 9, 8, 4]
>>> [elem*2 for elem in li]     
[2, 18, 16, 8]
>>> li                          
[1, 9, 8, 4]
>>> li = [elem*2 for elem in li]
>>> li
[2, 18, 16, 8]
["%s=%s" % (k, v) for k, v in params.items()]
>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> params.keys()   1
['server', 'uid', 'database', 'pwd']
>>> params.values() 2
['mpilgrim', 'sa', 'master', 'secret']
>>> params.items()  3
[('server', 'mpilgrim'), ('uid', 'sa'), ('database', 'master'), ('pwd', 'secret')]
>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> params.items()
[('server', 'mpilgrim'), ('uid', 'sa'), ('database', 'master'), ('pwd', 'secret')]
>>> [k for k, v in params.items()]               
['server', 'uid', 'database', 'pwd']
>>> [v for k, v in params.items()]               
['mpilgrim', 'sa', 'master', 'secret']
>>> ["%s=%s" % (k, v) for k, v in params.items()]
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
Unión y división de listas
    return ";".join(["%s=%s" % (k, v) for k, v in params.items()])
>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> ["%s=%s" % (k, v) for k, v in params.items()]
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> ";".join(["%s=%s" % (k, v) for k, v in params.items()])
'server=mpilgrim;uid=sa;database=master;pwd=secret'
>>> li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s = ";".join(li)
>>> s
'server=mpilgrim;uid=sa;database=master;pwd=secret'
>>> s.split(";")   
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s.split(";", 1)
['server=mpilgrim', 'uid=sa;database=master;pwd=secret']

Más lectura


Ejercicios

  1. Usando diccionarios escriba un programa para traducir palabras del ingles al español. Que satisfaga:
    Palabra: hola
    Word: hello
  2. Modificar el programa anterior para permitir agregar palabras, listar palabras y borrar palabras del diccionario
  3. Modificar el programa anterior para convertir todas las palabras en inglés en mayúsculas
  4. Agregar una opción al programa que imprima todas las palabras en cada idioma

Solucion:

>>> dic = {}
>>> def traducir(palabra):
...     if palabra in dic:
...             return dic[palabra]
...     else:
...             return 'no esta'
...
>>> dic['hola'] = 'hello'
>>> traducir('hola')
'hello'
>>> def agregar(esp, ing):
...     dic[esp] = ing
...
>>> def borrar(esp):
...     del dic[esp]
>>> def listar():
...     return dic.keys()
>>> def mayus():
...     for i in listar():
...        dic[i] = dic[i].capitalize()
...        return dic
>>> def listar_espanol():
...     return dic.keys()
>>> def listar_ingles():
...     return dic.values()

Copyright (C) 2004-2007 Menttes - All Rights Reserved