Diferencia entre revisiones de «Usuario:Lmorillas/modulo programacion/python/diccionarios»
De WikiEducator
(Página creada con '{{DISPLAYTITLE:Diccionarios}} ==¿Qué son?== Son colecciones de datos que almacenan la infomación por parejas '''clave-valor''' (tablas hash o arrays asociativos en otros len…') |
|||
(Una revisión intermedia por el mismo usuario no mostrado) | |||
Línea 73: | Línea 73: | ||
nombre --> Luis Pastor | nombre --> Luis Pastor | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | == Un ejemplo: estudio de la frecuencia de palabras en un texto == | ||
+ | <source lang="python"> | ||
+ | import string | ||
+ | |||
+ | fnombre = raw_input('Intro ruta del fichero de texto a analizar: ') | ||
+ | |||
+ | # leemos el fichero como una cadena | ||
+ | texto = open(fnombre).read() | ||
+ | |||
+ | # conversión a minúsculas | ||
+ | texto = texto.lower() | ||
+ | |||
+ | # reemplazo de signos de puntuacion por espacios | ||
+ | for signo in string.punctuation: | ||
+ | texto.replace(signo, ' ') | ||
+ | |||
+ | # troceamos por palabras (por los espacios en blanco) | ||
+ | palabras = texto.split() # palabras es ahora una lista de cadenas | ||
+ | |||
+ | frecuencia = {} | ||
+ | # contamos palabras. Incrementamos | ||
+ | for pal in palabras: | ||
+ | frecuencia[pal] = frecuencia.get(pal, 0) + 1 | ||
+ | |||
+ | # mostrar resultado | ||
+ | for clave, valor in frecuencia.items(): | ||
+ | print clave, valor | ||
+ | |||
+ | # ordenar resultado | ||
+ | import operator | ||
+ | sorted(frecuencia.items(), key=operator.itemgetter(1), reverse=True) | ||
+ | |||
+ | # o más eficiente con diccionarios grandes | ||
+ | sorted(frecuencia.iteritems(), key=operator.itemgetter(1), reverse=True) | ||
+ | </source> | ||
+ | |||
+ | |||
+ | == Ejercicios == | ||
+ | # Modifica el ejercicio de la agenda de la sección anterior para que la información no se almacene en listas, sino en diccionarios: tu agenda será un diccionario de diccionarios. Usa como clave el nombre de tus contactos. |
Última revisión de 22:17 18 nov 2011
Contenido
¿Qué son?
Son colecciones de datos que almacenan la infomación por parejas clave-valor (tablas hash o arrays asociativos en otros lenguajes de programación)
Ejemplo y uso
# creamos diccionario # importante: llaves {} >>> estudiante = {'nombre': 'Luis Pastor', 'edad': 19, 'curso': '1 DAW'} # acceso a un elemento: por clave, no por posición >>> estudiante['nombre'] 'Luis Pastor' >>> estudiante['edad'] 19 # modificación de un valor >>> estudiante['edad'] += 1 >>> estudiante['edad'] 20 # creación de una nueva pareja clave-valor >>> estudiante['telf'] = '6453333210' >>> estudiante {'edad': 20, 'nombre': 'Luis Pastor', 'telf': '6453333210', 'curso': '1 DAW'} # comprobación de si existe una clave >>> estudiante.has_key('edad') True >>> estudiante.has_key('matrícula') False >>> 'edad' in estudiante True # ¿claves del diccionario? >>> estudiante.keys() ['edad', 'nombre', 'telf', 'curso'] # ¿valores del diccionario? >>> estudiante.values() [20, 'Luis Pastor', '6453333210', '1 DAW'] # parejas clave-valor >>> estudiante.items() [('edad', 20), ('nombre', 'Luis Pastor'), ('telf', '6453333210'), ('curso', '1 DAW')] # obtener un valor, configurando valor por defecto si no existe esa clave >>> estudiante.get('edad') 20 >>> estudiante.get('matrícula', 'Sin completar') 'Sin completar' # eliminar entrada >>> del estudiante['curso'] >>> estudiante {'edad': 20, 'nombre': 'Luis Pastor', 'telf': '6453333210'} # borrar todo el contenido del diccionario >>> estudiante.clear() >>> estudiante {}
Más operaciones
¿Imprimir con claves ordenadas?
>>> for clave in estudiante: print clave, '-->', estudiante[clave] edad --> 19 nombre --> Luis Pastor curso --> 1 DAW >>> claves = estudiante.keys() >>> claves.sort() >>> for clave in claves: print clave, '-->', estudiante[clave] curso --> 1 DAW edad --> 19 nombre --> Luis Pastor
Un ejemplo: estudio de la frecuencia de palabras en un texto
import string fnombre = raw_input('Intro ruta del fichero de texto a analizar: ') # leemos el fichero como una cadena texto = open(fnombre).read() # conversión a minúsculas texto = texto.lower() # reemplazo de signos de puntuacion por espacios for signo in string.punctuation: texto.replace(signo, ' ') # troceamos por palabras (por los espacios en blanco) palabras = texto.split() # palabras es ahora una lista de cadenas frecuencia = {} # contamos palabras. Incrementamos for pal in palabras: frecuencia[pal] = frecuencia.get(pal, 0) + 1 # mostrar resultado for clave, valor in frecuencia.items(): print clave, valor # ordenar resultado import operator sorted(frecuencia.items(), key=operator.itemgetter(1), reverse=True) # o más eficiente con diccionarios grandes sorted(frecuencia.iteritems(), key=operator.itemgetter(1), reverse=True)
Ejercicios
- Modifica el ejercicio de la agenda de la sección anterior para que la información no se almacene en listas, sino en diccionarios: tu agenda será un diccionario de diccionarios. Usa como clave el nombre de tus contactos.