Python - busqueda de secuencias

 
Vista:

busqueda de secuencias

Publicado por ALB (7 intervenciones) el 25/02/2021 17:23:28
Buenas a todos
He creado dos diccionarios que resumidamente son:
d1: {s1: abcdef, s2: ghijkl}
d2: {s3: cdef, s4:mnopq}

La s3 y la s1 no son iguales pero la s3 si aparece en la s1.
Habría alguna forma de crear un script que me recorriera los dos diccionarios y me dijeran que "s" del "d2" aparecen en el "d1"

Muchas gracias por la ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

busqueda de secuencias

Publicado por joel (901 intervenciones) el 25/02/2021 19:15:52
haber si te sirve algo así:

1
2
3
4
5
6
7
d1= {"s1": "abcdef", "s2": "ghijkl"}
d2= {"s3": "cdef", "s4":"mnopq"}
 
for i in d1.keys():
    for j in d2.keys():
        if d1[i].find(d2[j])!=-1:
            print (f"{j} del d2")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

busqueda de secuencias

Publicado por ABL (7 intervenciones) el 25/02/2021 19:59:34
Joel muchisimass gracias lo he probado y me sirve.
No entiendo lo que quiere decir el significado del "!=-1"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

busqueda de secuencias

Publicado por joel (901 intervenciones) el 25/02/2021 20:12:59
Si, quiere decir que sea diferente a -1... la función find() devuelve -1 cuando no encuentra coincidencia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

busqueda de secuencias

Publicado por ABL (7 intervenciones) el 26/02/2021 11:17:20
Gracias por la alclaración Joel me estas ayudando mucho
He vuelto a probar el script y tengo un problema
si le meto un else para que me digas que secuencias del diccionario 2 no aparecen en el diccionario 1, me devuelve todas las secuencias del diccionario 2 incluso las que si aparecen en la primera condición
1
2
3
4
5
6
7
8
9
d1= {"s1": "abcdef", "s2": "ghijkl"}
d2= {"s3": "cdef", "s4":"mnopq"}
 
for i in d1.keys():
    for j in d2.keys():
        if d1[i].find(d2[j])!=-1:
            print("es", j)
        else:
            print ("no es", j)

El resultado que me da es:
es s3
no es s4
no es s3
no es s4

Yo al poner el else lo que quiero que me diga es que el s4 no aparece en el d1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

busqueda de secuencias

Publicado por Joel (901 intervenciones) el 26/02/2021 13:10:27
No se si te he entendido bien, pero puede ser algo así:
1
2
3
4
5
6
7
8
9
10
11
d1= {"s1": "abcdef", "s2": "ghijkl"}
d2= {"s3": "cdef", "s4":"mnopq"}
 
for i in d1.keys():
    encontrado=False
    for j in d2.keys():
        if d1[i].find(d2[j])!=-1:
            print (f"Es {j} del d2")
            encontrado=True
    if not encontrado:
        print (f"NO Es {j} del d2")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

busqueda de secuencias

Publicado por madridgenico (1 intervención) el 26/02/2021 14:40:57
Gracias Joel, lo he visto y he intentado hacer un script similar:
1
2
3
4
5
6
7
8
d1 = {"s1" : "abcd", "s2": "efgh", "s3" : "ijklmn"}
d2 = {"s4" : "opqrs", "s5" : "efg", "s6" : "abc", "s7" : "lmn", "s8" : "tuvxy"}
for i in d1.keys():
    for j in d2.keys():
        if d1[i].find(d2[j])!=-1:
            print ("la clave", j, "se encuentra en la clave" ,i)
        elif d1[i].find(d2[j])==-1:
            print ("La clave", j ,"no se ecuentra")

pero lo que me imprime por pantalla es:
La clave s4 no se ecuentra
La clave s5 no se ecuentra
la clave s6 se encuentra en la clave s1
La clave s7 no se ecuentra
La clave s8 no se ecuentra
La clave s4 no se ecuentra
la clave s5 se encuentra en la clave s2
La clave s6 no se ecuentra
La clave s7 no se ecuentra
La clave s8 no se ecuentra
La clave s4 no se ecuentra
La clave s5 no se ecuentra
La clave s6 no se ecuentra
la clave s7 se encuentra en la clave s3
La clave s8 no se ecuentra

Esto no es lo que estoy buscando. Hay algunas claves que aparecen como que se encuentra y que no se encuentran y ademas se me repiten tres veces
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar