Clase Numero 10 – Mas Diccionarios

Ejercicio 1 Clase 10

"""
comprueba con CADA letra
cual es la palabra mas
larga que la contiene
"""

def procText (texto):
    dic = {}
    conjunto = set ()
    palabras = texto.split(" ")
    
    for letra in texto:
        if letra.isalpha():
            conjunto.add(letra)
    for letra in conjunto:
        maximo = 0
        palmax = ""
        for pal in palabras:
            if letra in pal:
                if len(pal) > maximo:
                    maximo = len (pal)
                    palmax = pal
        dic.update({letra:palmax})
    return dic

def main ():
    texto = "la casa grande"
    dic = procText(texto)
    print (dic)
main ()

Resultado

{'g': 'grande', 'r': 'grande', 's': 'casa', 'e': 'grande', 'c': 'casa', 'n': 'grande', 'd': 'grande', 'l': 'la', 'a': 'grande'}

Ejercicio 1 version simple

"""
tomar cada letra de un texto y
calcular cual es la palabra
mas larga que la contiene
"""

dic = {}
texto = "mi mama me mima mucho"
letras = []
for i in range (len(texto)):
    if not texto [i] in letras:
        letras.append(texto[i])
    sepa = texto.split (" ")
    
    for c in letras:
        max = 0 ; palmax = " "
        for p in sepa:
            if c in p:
                if len (p) > max:
                    max = len (p)
                    palmax = p
                    
    dic.update ({c:palmax})
    
    
print (dic)

Resultado

>>> %Run majuma_clase_10_ejercicio1.py
{'m': 'mucho', 'i': 'mima', ' ': ' ', 'a': 'mama', 'e': 'me', 'u': 'mucho', 'c': 'mucho', 'h': 'mucho', 'o': 'mucho'}
>>> 

Ejercicios Iniciales con Diccionarios – 1

"""
Ejemplos multiples con diccionario
1 - Muestro valor de las claves
"""

def main ():
    # creo un diccionario: recordar que es de a pares CLAVE:VALOR
    #Las parejas de clave y valor se separan con comas, y la
    #clave y el valor se separan con dos puntos.
    d = {"Juan" : 7, "Lukas" : 9 , "Alfredo" : 9}
    
    for k in (d) : # recorro el dic y muestro el valor de cada clave
        print (d[k])
    
        
main ()

Resultado

>>> %Run majuma_clase_10_ejercicio2_dic.py
7
9
9
>>> 

EJERCICIOS INICIALES CON DICCIONARIOS – 2

"""
Ejemplos multiples con diccionario
2 - Muestro la clave de los datos
"""

def main ():
    # creo un diccionario: recordar que es de a pares CLAVE:VALOR
    #Las parejas de clave y valor se separan con comas, y la
    #clave y el valor se separan con dos puntos.
    d = {"Juan" : 7, "Lukas" : 9 , "Alfredo" : 9}
    
    for k in d : # recorro el dic y muestro cada clave
        print (k) 
    
        
main ()

Resultado

>>> %Run majuma_clase_10_ejercicio3_dic.py
Juan
Lukas
Alfredo
>>> 

Ejercicio diccionario con varios ejemplos

"""
ejemplos con diccionario
"""

def main ():
    
#creo un diccionario
    d = {"Juan" : 7, "Rosa" : 8 , "Alfredo": 9}
#creo otro diccionario  
    d2 = {"Lucas" : 8, "Jorge" : 8 , "Alberto": 9}
#agrego diccionario 2 (d2) a diccionario (d)
    d.update(d2)
#borro elemento "Juan" de diccionario d
    del d ["Juan"]
    
#compruebo si el elemento "Juan" esta, si no muestro mensaje
    for key in d:
        if "Juan " in d:
            print ("Juan existe")
        else:
            print ("Juan no esta")
        print (key, ":", d[key])
#reemplazo el elemento "Rosa" con un nuevo diccionario        
    d['Rosa'] =  {"Franco" : 5, "Tiro" : 6 , "Sergio": 10}
    print(d)
main ()

Resultado

>>> %Run 'ejemplo_diccionario_clase10 (1).py'
Juan no esta
Rosa : 8
Juan no esta
Alfredo : 9
Juan no esta
Lucas : 8
Juan no esta
Jorge : 8
Juan no esta
Alberto : 9
{'Rosa': {'Franco': 5, 'Tiro': 6, 'Sergio': 10}, 'Alfredo': 9, 'Lucas': 8, 'Jorge': 8, 'Alberto': 9}
>>> 

Ejercicio avanzado con texto cargado de archivo

"""
Ejercicio avanzado de diccionario que examina un texto
cargado desde archivo y nos trae
el TOTAL de palabras distintas
las 10 palabras mas comunes
las palabras mas largas
las palabras mas comunes con mas de 3 letras
la cantidad de palabras distintas segun su cantidad de letras
ocurrencias totales segun cantidad de letras
"""


# Abrir archivo para lectura
nombrearchivo = 'texto_chernobil.txt'
with open(nombrearchivo) as archivo:
    contador = {} # diccionario para guardar ocurrencia de palabras
    grupo = {} # diccionario para agrupar palabras según su longitud
    for linea in archivo:
        palabras = linea.split() # separar línea en palabras, por espacio en blanco
        for palabra in palabras:
            palabra = palabra.lower().strip(".,") # cambiar a minúscula y quitar puntuación
            if palabra not in contador:
                contador[palabra] = 1
            else:
                contador[palabra] += 1
            # Agrupar según longitud
            longitud = len(palabra)
            if longitud not in grupo:
                grupo[longitud] = { palabra } # Usaremos un conjunto de palabras (sin repetir)
            else:
                grupo[longitud].add( palabra )

# Cerrar archivo al finalizar
archivo.close()

# Mostrar información
print('Total de palabras distintas:', len(contador))

print('Las diez palabras más comunes son:')
for palabra in sorted( contador, key = contador.get, reverse=True )[:10]:
    print('\t',palabra,':',contador[palabra],'ocurrencias')

print('Las palabras más largas son:')
for palabra in sorted( contador, key = len, reverse=True )[:10]:
    print('\t',palabra,':',len(palabra),'letras',contador[palabra],'ocurrencia(s)')

print('Las diez palabras más comunes (con más de 3 letras) son:')
for palabra in sorted( {x for x in contador if len(x)>3}, key = contador.get, reverse=True )[:10]:
    print('\t',palabra,':',contador[palabra],'ocurrencias')

print('Cantidad de palabras distintas según su cantidad de letras')
print('\t','{:6s} {:}'.format('Letras','Palabras'))
for longitud in grupo:
    print('\t','{:6d} {:7d}'.format(longitud, len(grupo[longitud]) ) )

print('Ocurrencias totales según cantidad de letras')
print('\t','{:6s} {:}'.format('Letras','Total palabras'))
for longitud in grupo:
    palabras_longitud = 0
    for palabra in grupo[longitud]:
        palabras_longitud += contador[palabra]
    print('\t','{:6d} {:7d}'.format(longitud, palabras_longitud) )
    
    
    

Resultado

>>> %Run 'diccionario_eri2 (1).py'
Total de palabras distintas: 245
Las diez palabras más comunes son:
	 de : 46 ocurrencias
	 la : 22 ocurrencias
	 en : 20 ocurrencias
	 y : 15 ocurrencias
	 el : 10 ocurrencias
	 que : 10 ocurrencias
	 accidente : 9 ocurrencias
	 del : 8 ocurrencias
	 000 : 8 ocurrencias
	 a : 7 ocurrencias
Las palabras más largas son:
	 sobrecalentamiento : 18 letras 1 ocurrencia(s)
	 descontaminaciã³n : 17 letras 2 ocurrencia(s)
	 medioambientales : 16 letras 1 ocurrencia(s)
	 expulsados,6​ : 15 letras 1 ocurrencia(s)
	 aproximadamente : 15 letras 1 ocurrencia(s)
	 chernã³bil1​ : 14 letras 1 ocurrencia(s)
	 desequilibrios : 14 letras 1 ocurrencia(s)
	 internacional : 13 letras 2 ocurrencia(s)
	 controversias : 13 letras 1 ocurrencia(s)
	 descontrolado : 13 letras 1 ocurrencia(s)
Las diez palabras más comunes (con más de 3 letras) son:
	 accidente : 9 ocurrencias
	 personas : 7 ocurrencias
	 nuclear : 6 ocurrencias
	 central : 4 ocurrencias
	 grandes : 3 ocurrencias
	 como : 3 ocurrencias
	 reactor : 3 ocurrencias
	 recibieron : 3 ocurrencias
	 radiactivos : 2 ocurrencias
	 descontaminaciã³n : 2 ocurrencias
Cantidad de palabras distintas según su cantidad de letras
	 Letras Palabras
	      2      18
	      9      13
	     14       2
	      3      23
	      7      24
	      8      31
	      5      30
	      4      20
	     11      15
	      1       7
	      6      22
	     10      23
	     13       5
	     16       1
	     12       7
	     18       1
	     15       2
	     17       1
Ocurrencias totales según cantidad de letras
	 Letras Total palabras
	      2     130
	      9      22
	     14       2
	      3      66
	      7      37
	      8      39
	      5      33
	      4      24
	     11      16
	      1      27
	      6      26
	     10      28
	     13       7
	     16       1
	     12       9
	     18       1
	     15       2
	     17       2
>>> 

Leave a Reply

Your email address will not be published. Required fields are marked *