continuo con las listas de cadenas de caracteres

Attila Saorin mostroratas en yahoo.es
Jue Ago 29 12:11:49 CEST 2002


 --- "< Sonia >" <siosss en hotmail.com> escribió: 

hola Sonia,

A mi se me ha ocurrido hacerlo asi:

lista = []

def contar(list):
    # inicializo las variables
    frecuencia = {}
    lis_resul = []
    letra_max=' '
    for palabra in lista:
        for letra in palabra:
            frecuencia[letra] = frecuencia.get(letra,0)+1 #esto nos cuenta todas las letras
    for letra in frecuencia:
        if letra_max == ' ':
            letra_max = letra #inicializo una, la primera del dict, esto es lo que podrias mejorar
        elif (frecuencia[letra] > frecuencia[letra_max]):
                letra_max = letra    
    for pal in lista:
        if letra_max in pal:
            lis_resul.append(pal) # la lista resultado con las palabras que tienen a letra_max
    return (letra_max,lis_resul) #devuelvo las dos para luego poder imprimir ambas
            
tam = int(raw_input('Cuantas palabras quieres introducir?: '))
for palabra in range(0,tam):
    lista.append(raw_input('Introduce una palabra: '))
print 'Las palabras a mirar son: ',lista
res = contar(lista)
print 'La letra mas frecuente es: ',res[0]
print 'Las palabras que contienen esa letra son: ', res[1]

No se si no te gusta que se parezca o no a tu codigo (lo he cambiado un poco), esto hace lo que
pides, solo tiene un problema, que lo dejo q te lo curres, es que si tienes una letra repetida en
numero de ocurrencias, por ejemplo:

Cuantas palabras quieres introducir?: 3
Introduce una palabra: solo
Introduce una palabra: hala
Introduce una palabra: minu
Las palabras a mirar son:  ['solo', 'hala', 'minu']
La letra mas frecuente es:  a
Las palabras que contienen esa letra son:  ['hala']
>>> 

como ves solo presenta una, 'hala' por la letra 'a', cuando la 'o' tb. a parece 2 veces, esto es
debido a que al insertar por primera vez en letra_max, coge la primera letra del diccionario, como
ya dijo Hernan una vez, es aleatorio quien esta antes en un diccionario (es decir no siempre se
comportara igual), asi que yo creo que deberias depurar eso para presentar varias letras si son
varias las que coinciden en ocurrencias, quizas que letra_max sea tb un diccionario y ahi incluyes
las letras, aunque es un engorro cada vez que encuentres una mejor tendrias que borrarlo todo, no,
no me gusta, mejor puedes ir metiendo en una lista las letras que tienes esa misma frecuencia,
pero tienes el mismo problema. Bueno ya eso es decision tuya ;)

<DIV>alguna me ha intentado ayudar dandome trozos de codigo, pero incluian unas sentencias q yo no
he dado en clase. os envio lo q he hecho(esta mal, faltan un monton de cosas, pero para eso lo
envio)para q me ayudeis. bajo de todo he incuido otra vez el enunciado, por si se apunta alguien
mas.</DIV>

Si hay algo que no entiendas, pues pregunta :)

Un saludo.

Attila


_______________________________________________________________
Yahoo! Messenger
Nueva versión: Webcam, voz, y mucho más ¡Gratis! 
Descárgalo ya desde http://messenger.yahoo.es


Más información sobre la lista de distribución Python-es