Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad 2 Diccionarios Paquetes Modulos PDF
Unidad 2 Diccionarios Paquetes Modulos PDF
p. 2
Indice
ndice de contenido
Presentacin:.....................................................................4
Objetivos:............................................................................5
Bloques temticos:............................................................6
1. Diccionarios....................................................................7
1.1. Crear diccionario...................................................................................8
1.2. Encadenamiento y agregar elementos.................................................9
1.3. Pasar a lista..........................................................................................10
1.4. Iterar......................................................................................................10
2. Mdulo y paquete.........................................................11
2.1. Preparando y creando distribucin de paquete.................................11
..................................................................................................................................11
2.1.1. Paso 1 Creamos el o los archivos a incluir en el paquete (directorio) 11
2.1.2. Paso 2 Le agrego un archivo denominado setup.py.............................11
2.1.3. Paso 3 Construimos la distribucin........................................................12
.................................................................................................................................14
2.1.4. Paso 4 Instalamos la distribucin dentro de nuestra distribucin local
de Python................................................................................................................14
p. 3
.................................................................................................................................17
2.1.6. Paso 6 Modificaciones posteriores..........................................................17
2.1.7. Paso 7 Registro de distribucin en PyPI................................................18
3. Uso de __main__..........................................................21
Ejercicio............................................................................23
4. Base de Datos: Uso de Shelves..................................26
4.1. Crear archivo de bytes de base de datos...........................................27
4.2. Leer desde persona - leerDesdePersona.py..................................27
4.3. Actualizar datos - actualizarDatos.py.................................................28
4.4. Borrar datos - borrarDatos.py.............................................................28
5. Tuplas............................................................................29
6. Ms sobre bucles y......................................................30
6.1. Estructura for.......................................................................................30
6.2. Estructura for aplicada a Strings........................................................31
6.3. Estructura for aplicada a Tuplas y objetos con tuplas......................31
www.sceu.frba.utn.edu.ar/e-learning
p. 4
Bibliografa.......................................................................36
Presentacin:
En esta unidad veremos como llevar nuestros cdigos a un nivel optimo de organizacin
mediante la implementacin de mdulos y paquetes, los cuales permitirn que nuestros
scripts sean reusables. Un mdulo en concreto se corresponde con un script, y cada
mdulo puede importar otros mediante el uso de import o from.
Tambin veremos una forma ms eficiente de guardar informacin que utilizando listas, al
incorporar el uso de diccionarios.
Finalmente profundizaremos un poco en los conceptos de funciones, bucles y estructuras.
www.sceu.frba.utn.edu.ar/e-learning
p. 5
Objetivos:
Que los participantes:
Aprendan a crear mdulos y paquetes, as como a usar diccionarios para guardar y
manipular informacin.
Profundicen en la comprensin de los conceptos de funciones, estructuras de control y
bucles
www.sceu.frba.utn.edu.ar/e-learning
p. 6
Bloques temticos:
1.- Diccionarios.
2.- Mdulos y paquetes.
3.- Uso de __main__
4.- Ejemplo Diccionario
5.- Tuplas
6. Ms sobre bucles y estructuras
www.sceu.frba.utn.edu.ar/e-learning
p. 7
1. Diccionarios
Junto con las listas, los diccionarios son uno de los tipos de objetos incorporados por
python, que presentan una gran flexibilidad. Mientras que podemos pensar las listas como
una coleccin ordenada de objetos, se puede pensar en los diccionarios como
colecciones desordenadas, que poseen como principal distincin el hecho de que los
elementos se almacenan por clave, en lugar de por su posicin. Mientras que las listas se
pueden considerar como los arrays de otros lenguajes, los diccionarios toman el lugar de
los registros, tablas de bsqueda, y cualquier otro tipo de registro, en donde los nombres
de los elementos son ms significativos que sus posiciones.
La siguiente tabla recoge un resumen de las operaciones ms utilizadas.
Operacin
Interpretacin
D={}
Diccionario vaco
D = { 'nombre: 'Juan', 'edad' = 39}
Dos items del diccionario
E = {'identificacin': {'nombre': 'Juan',
Anidamiento
'apellido': 'Barreto'}
D = dict('nombre: 'Juan', 'edad' = 39)
Estructura alternativa
D = dict([('nombre', 'Juan'),('edad', 39)])
Pares clave/valor
D = dict(zip(['clave1','clave2'],['valor1', 'valor2']))
Crear lista con zip
D['identificacin']['nombre']
Indexado por identificacin y nombre
'edad' in D
Chequear si un campo se encuentra en el diccionario
D.keys()
Todas las claves
D.values()
todos los valores
D.items()
Tuplas de todas las (clave, valor)
D.copy()
copiar
D.clear()
remueve todos los items
D.update(D2)
Agrego D2 a D
D.get(clave)
Obtiene el valor de una clave
D.pop(key)
Borra un elemento por su clave y retorna el valor
list(D.keys())
Crea una lista que contiene las claves del diccionario
list(D.values())
Crea una lista que contiene los valores del diccionario
list(D.items())
Crea una lista que contiene las claves y los valores del diccionario
len(D)
Longitud
D[clave] = 42
Agrega una nueva clave con su valor
Comprensin
print([clave for (clave, valor) in db.items()])
print([valor for (clave, valor) in Juan.items() if clave == 'identificacion'])
print([clave for clave in db.keys()])
www.sceu.frba.utn.edu.ar/e-learning
p. 8
www.sceu.frba.utn.edu.ar/e-learning
p. 9
'pintor'],
'nombre':
www.sceu.frba.utn.edu.ar/e-learning
p. 10
'ingeniero'],
{'primero':
'Juan',
'segundo':
1.4. Iterar.
diccionarios4_iterar.py
# ######################################
# Iterar
# ######################################
F = {'nombre': {'primero': 'Juan', 'segundo': 'Marcelo'},
'trabajo': ['profesor', 'ingeniero']
}
for key in F:
print(key, '=>', F[key])
input()
trabajo => ['profesor', 'ingeniero']
nombre => {'segundo': 'Marcelo', 'primero': 'Juan'}
www.sceu.frba.utn.edu.ar/e-learning
p. 11
2. Mdulo y paquete
2.1. Preparando y creando distribucin de paquete.
Podemos crear paquetes para:
A.- Agregarlos a nuestra distribucin de Python
B.- Compartir con otros a travs de PyPI
www.sceu.frba.utn.edu.ar/e-learning
p. 12
= 'prueba1',
= '1.0.0',
= ['prueba1'],
= 'hfpython',
= 'juanbarretor@gmail.com',
= 'fascinaweb.com',
= 'Es una prueba de uso',
)
Son los nombres de los argumentos de la funcin setup
Nota: Con py_modules asociamos los metadatos del mdulo con los argumentos
de la funcin setup
www.sceu.frba.utn.edu.ar/e-learning
p. 13
www.sceu.frba.utn.edu.ar/e-learning
p. 14
dist dentro tiene un archivo .zip con nombre igual al paquete y al cual se le ha agregado la
versin
El contenido de PKG-INFO es:
Metadata-Version: 1.0
Name: prueba1
Version: 1.0.0
Summary: Es una prueba de uso
Home-page: fascinaweb.com
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Description: UNKNOWN
Platform: UNKNOWN
www.sceu.frba.utn.edu.ar/e-learning
p. 15
running install
running build
running build_py
creating build
creating build\lib
copying prueba1.py -> build\lib
running install_lib
copying build\lib\prueba1.py -> C:\Python34\Lib\site-packages
byte-compiling C:\Python34\Lib\site-packages\prueba1.py to
prueba1.cpython-34.py
c
running install_egg_info
Writing C:\Python34\Lib\site-packages\prueba1-1.0.0-py3.4.egg-info
www.sceu.frba.utn.edu.ar/e-learning
p. 16
www.sceu.frba.utn.edu.ar/e-learning
p. 17
elemento3n1
elemento1n2
elemento2n2
elemento3n2
elemento1n3
elemento2n3
elemento3n3
www.sceu.frba.utn.edu.ar/e-learning
p. 18
www.sceu.frba.utn.edu.ar/e-learning
p. 19
elemento1n3
elemento2n3
elemento3n3
Lo que hemos logrado es que se agregue por cada nivel un salto de lnea extra.
www.sceu.frba.utn.edu.ar/e-learning
p. 20
www.sceu.frba.utn.edu.ar/e-learning
p. 21
3. Uso de __main__
Una de las ventajas que incorpora Python con el uso de __main__ es poder llamar un
mdulo directamente, con un cdigo de prueba que es ledo y ejecutado unicamente
cuando este se invoca. Esto permite testear nuestro script y dejar en el mismo el cdigo
de prueba.
03-Uso-de-main/prueba1/prueba1.py
def recorrerLista(item, nivel=0):
for x in item:
if isinstance(x, list):
recorrerLista(x, nivel + 1)
else:
for y in range(nivel):
print("\t", end="")
print(x)
if __name__ == '__main__':
lista = ["elemento1n1", "elemento2n1", "elemento3n1",
["elemento1n2", "elemento2n2", "elemento3n2",
["elemento1n3", "elemento2n3", "elemento3n3"]]]
recorrerLista(lista)
print('--NIVEL 1------------------------------------')
print(lista[0])
print(lista[1])
print(lista[2])
print(lista[3])
print('--NIVEL 2------------------------------------')
print(lista[3][0])
print(lista[3][1])
print(lista[3][2])
print(lista[3][3])
print('--NIVEL 3------------------------------------')
print(lista[3][3][0])
print(lista[3][3][1])
print(lista[3][3][2])
input()
elemento1n1
www.sceu.frba.utn.edu.ar/e-learning
p. 22
elemento2n1
elemento3n1
elemento1n2
elemento2n2
elemento3n2
elemento1n3
elemento2n3
elemento3n3
--NIVEL 1-----------------------------------elemento1n1
elemento2n1
elemento3n1
['elemento1n2', 'elemento2n2', 'elemento3n2', ['elemento1n3', 'elemento2n3',
'elemento3n3']]
--NIVEL 2-----------------------------------elemento1n2
elemento2n2
elemento3n2
['elemento1n3', 'elemento2n3', 'elemento3n3']
--NIVEL 3-----------------------------------elemento1n3
elemento2n3
elemento3n3
www.sceu.frba.utn.edu.ar/e-learning
p. 23
Ejercicio
Una de las ventajas que incorpora Python con el uso de __main__ es poder llamar un
mdulo
001-definir-diccionario.py
import pprint
# #################################################
# Definir diccionarios
# #################################################
Juan = {'identificacion': {'nombre': 'Juan', 'apellido':
'Garcia'},
'edad': 24,
'sueldo': 5000,
'profesin': 'Pintor'}
Susana = {'identificacion': {'nombre': 'Susana', 'apellido':
'Gomez'},
'edad':25,
'sueldo': 6000,
'profesin': 'Empleada'}
print(Juan)
print(Susana)
print('------------------------------')
# #################################################
# Lista de diccionarios
# #################################################
personas = [Juan, Susana]
for x in personas:
print(x['identificacion']['nombre'], end='!\n')
print('------------------------------')
# #################################################
# Diccionario de diccionarios
# #################################################
db= {}
db['Juan']= Juan
db['Susana']= Susana
print(db['Juan']['identificacion']['nombre'])
www.sceu.frba.utn.edu.ar/e-learning
p. 24
print(db['Juan']['edad'])
print('------------------------------')
print(db)
print('------------------------------')
# #################################################
# Aumentar legibilidad con mdulo pprint
# #################################################
pprint.pprint(db)
print('------------------------------')
# #################################################
# Chequear presencia de un elemento
# #################################################
print('identificacion' in Juan)
print('nombre' in Juan)
print('nombre' in db)
print('------------------------------')
# #################################################
# Recorrer diccionario (comprension)
# #################################################
print([clave for (clave, valor) in db.items()])
print([valor for (clave, valor) in Juan.items() if clave ==
'identificacion'])
print([clave for clave in db.keys()])
+eval(input())
{'edad': 24, 'sueldo': 5000, 'profesin': 'Pintor',
'identificacion': {'apellido': 'Garcia', 'nombre': 'Juan'}}
{'edad': 25, 'sueldo': 6000, 'profesin': 'Empleada',
'identificacion': {'apellido': 'Gomez', 'nombre': 'Susana'}}
-----------------------------Juan!
Susana!
-----------------------------Juan
24
-----------------------------{'Susana': {'edad': 25, 'sueldo': 6000, 'profesin': 'Empleada',
'identificacion': {'apellido': 'Gomez', 'nombre': 'Susana'}},
www.sceu.frba.utn.edu.ar/e-learning
p. 25
www.sceu.frba.utn.edu.ar/e-learning
p. 26
www.sceu.frba.utn.edu.ar/e-learning
p. 27
www.sceu.frba.utn.edu.ar/e-learning
p. 28
www.sceu.frba.utn.edu.ar/e-learning
p. 29
5. Tuplas
Las tuplas son secuencias como las listas pero son INMUTABLES como los strings
Se utilizan para representar colecciones fijas de items. Por ejemplo los componentes
de un calendario especfico.
Se crean utilizando parentesis, de forma muy similar a las listas, salvo que las listas son
MUTABLES.
05-Tuplas/tupla1.py
# ######################################
# Crear tupla
# ######################################
F = (1, 2, 3, 4, 5, 3)
print(len(F))
# ######################################
# Extender
# ######################################
F + (6, 7)
print(F)
# ######################################
# Determinar un elemento
# ######################################
print(F[0])
# ######################################
# Posicin de un elemento
# ######################################
print(F.index(3))
# ######################################
# n de veces que aparece un elemento
# ######################################
print(F.count(3))
input()
www.sceu.frba.utn.edu.ar/e-learning
p. 30
www.sceu.frba.utn.edu.ar/e-learning
p. 31
www.sceu.frba.utn.edu.ar/e-learning
p. 32
www.sceu.frba.utn.edu.ar/e-learning
p. 33
www.sceu.frba.utn.edu.ar/e-learning
p. 34
www.sceu.frba.utn.edu.ar/e-learning
p. 35
www.sceu.frba.utn.edu.ar/e-learning
p. 36
Bibliografa
Libros
Programming Python 5th Edition Mark Lutz O'Reilly 2013
Programming Python 4th Edition Mark Lutz O'Reilly 2011
Head First Python Paul Barry O'Reilly 2011
Manual online
https://docs.python.org/3.4/library/intro.html
www.sceu.frba.utn.edu.ar/e-learning