Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Diccionarios
#1
ayuda con este problema:

una función que reciba un texto y para cada carácter presente en el texto
devuelva la cadena más larga en la que se encuentra ese carácter.
Responder
#2
Hola, a ver qué te parece esta función.


Código:
from string import punctuation


def f(text, sep=" "):
    text = text.lower()
    splitted_text = text.split(sep)
    ret = {}
    for c in text:
        if c in punctuation or c in ret:
            continue
        try:
            ret[c] = max(
                (token for token in splitted_text if c in token),
                key=len)
        except ValueError:
            pass
    return ret

text = """\
Aristóteles fue un polímata: filósofo, lógico y científico de la Antigua \
Grecia cuyas ideas han ejercido una enorme influencia sobre la historia \
intelectual de Occidente por más de dos milenios."""
print(f(text))

El resultado es un diccionario:


Código:
{'g': 'antigua', 'e': 'aristóteles', 'ó': 'aristóteles', 'j': 'ejercido', 't': '
aristóteles', 'c': 'intelectual', 'a': 'aristóteles', 's': 'aristóteles', 'm': '
polímata:', 'd': 'occidente', 'n': 'intelectual', 'b': 'sobre', 'h': 'historia',
 'o': 'científico', 'u': 'intelectual', 'r': 'aristóteles', 'í': 'científico', '
á': 'más', 'y': 'cuyas', 'l': 'aristóteles', 'p': 'polímata:', 'i': 'aristóteles
', 'f': 'científico'}

En el caso de que con "cadena más larga" te refieras a palabra más larga. Si te refieres a oración más larga, puedes usar:


Código:
print(f(text, "."))

(Aunque en este caso el texto contiene solo una oración).

Un saludo.
Responder
#3
asi es por ejemplo serial algo asi:
de la oracion mas larga:

hola h=holaa
holaaa o=holaa
lala l=holaa
lelo a=holaa
juan e=lelo
j=juan
u=juan


como lo puedo hacer asi
n=juan
Responder
#4
Bien, entonces la función anterior debe servirte. Si texto es el texto que quieres analizar, haciendo resultados = f(texto), entonces podrás obtener la palabra más larga por cada caracter de la siguiente forma:


Código:
print(resultados["g"])  # La palabra más larga con g.
print(resultados["e"])
print(resultados["j"])

Y así sucesivamente.

Saludos.
Responder
#5
asi es ya me salio este es uno
Código:
import time
def e1():
    dic=[]
    c=str(input("Denota los elementos de la cadena: "))
    dic=c
    palabras = c.split()
    d={k:palabras.count(k) for k in list(set(palabras))}
    print(d)
    time.sleep(5)
    return e1()
e1()

estes es el otro
Código:
import os
import time
d = {}
def e3():
    o = input("Defina oracion: ")
    list_o = o.split(' ')
    
    for palabra in list(set(o.replace(' ', ''))):
        f = ''
        for elemento in list_o:
            if palabra in elemento:
                if elemento.count(palabra) > f.count(palabra):
                    f = elemento
        d[palabra] = f
    print(d)
    time.sleep(10)
    os.system('cls')
    return e3()
e3()
input()
Responder
#6
Hola, el código que pusiste no se corresponde para nada con la descripción del problema. Tu código indentifica palabras, no caracteres como lo indicaste.

De todas formas si eso es lo que necesitabas me alegro que te haya salido.

Saludos.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)