Python - Duda sobre listas dentro de diccionarios en python

 
Vista:
sin imagen de perfil

Duda sobre listas dentro de diccionarios en python

Publicado por mln (4 intervenciones) el 28/12/2016 19:26:16
Hola!! necesito saber cómo hacer que los valores de un diccionario aparezcan como una lista.
Mi problema es: defino una funcion donde al dar una cadena de ADN (por ejemplo: aaagctagcaaa), la funcion me devuelva un diccionario donde las claves sean los tripletes (conjuntos de cada tres letras: aaa gct agc aaa) y los valores sean las posiciones de esos tripletes. Cuando lo ejecuto, si algún triplete sale repetido no me devuelve todas las posiciones, sino solo 1. En el caso del ejemplo, aparece repetido el aaa y solo me da la ultima posicion, la 10. Adjunto cómo lo he hecho yo. Se aceptan otras alternativas para hacerlo.
Muchas gracias!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
dicc={}
 
def cadena():
    DNA=raw_input("Introduzca una cadena de DNA:")
    cadenaDNA=DNA.upper().strip().replace(" ","").replace("\n","")
    return cadenaDNA
cadenaDNA=cadena()
for base in cadenaDNA:
    if base!= "A" and base!="T" and base!="C" and base!="G":
        dicc= "False"
        break
    else:
        dicc={}
        for letra in range(0,len(cadenaDNA)-2,3):
            tripletes=cadenaDNA[letra:letra+3]
            dicc[tripletes]=[letra]
 
print dicc
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 xve
Val: 1.483
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda sobre listas dentro de diccionarios en python

Publicado por xve (1637 intervenciones) el 28/12/2016 22:16:58
Hola Min, no me queda muy claro exactamente que tiene que devolver... nos puedes poner exactamente lo que tiene que devolver para poder probarlo?
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
sin imagen de perfil

Duda sobre listas dentro de diccionarios en python

Publicado por mln (4 intervenciones) el 29/12/2016 03:59:46
Hola xve!! Se trata de definir una función en la que al introducir una cadena (solo se aceptan las letras A,T,C y G) esa función devuelva un diccionario donde las claves sean grupos de 3 letras en 3 letras y los valores las posiciones que ocupan esos tripletes en la cadena. Si la cadena tiene cualquier otra letra distinta a las 4 anteriores, la función debe devolver "False". Mi problema era que si algún grupo de tres letras se repetia solo aparecia la posición de uno de ellos. Pongo de nuevo como lo hice:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def cadena():
    DNA=raw_input("Introduzca una cadena de DNA:")
    cadenaDNA=DNA.upper().strip().replace(" ","").replace("\n","")
    return cadenaDNA
 
cadenaDNA=cadena()
for base in cadenaDNA:
    if base!= "A" and base!="T" and base!="C" and base!="G":
        dicc= "False"
        break
    else:
        dicc={}
        for letra in range(0,len(cadenaDNA)-2,3):
            tripletes=cadenaDNA[letra:letra+3]
            dicc[tripletes]=[letra]
 
print dicc



#Al ejecutar esto, quedaria algo así:
Introduzca una cadena de DNA: aaagcttacggggaaaa
{AAA:0, GCT:3, TAC:6, GGG:9, GAA:12}
Como ves, "aaa" se repite dos veces y solo aparece una de ellas.
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 kip
Val: 1.139
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda sobre listas dentro de diccionarios en python

Publicado por kip (257 intervenciones) el 29/12/2016 17:22:00
Hola, no te aparecen las ultimas porque si te fijas en la linea:

1
for letra in range(0,len(cadenaDNA)-2,3):

Haces un - 2 y eliminas las ultimas 2 letras de la cadena, elimina el - 2 y prueba, si esto que te indico hace conflicto con alguna especificacion de tu codigo y no puedes eliminarlo, podrias decirnos cual es el objetivo de aquel -2?
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
sin imagen de perfil

Duda sobre listas dentro de diccionarios en python

Publicado por mln (4 intervenciones) el 29/12/2016 18:01:37
El -2 es porque solo hay que considerar tripletes exactos, despreciando letras que puedan quedar sueltas al final. De todas formas, lo que falla no es que aparezca al final de la cadena, sino que si un triplete de letras aparece repetido solo da una de las posiciones y no todas. Lo que se busca es, por ejemplo:
AAAGTCAAAGCC
{AAA:0,6 , GTC:3 , GCC:9}
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