Bonjour à tous,

Voila plusieurs jours que j'essaye de me démêler avec un bout de code en vain, pas étonnant, sachant que je suis nouveau en python et n'en saisi pas encore toute la logique.
J'aimerais, à partir d'un dictionnaire, remplacer toutes les occurrences contenues dans une liste de plusieurs listes. D'une manière plus claire, on a :

les sequences = [['TTT[T/G]TTT'], ['GGG[A/C]TTT']]
Et le dictionnaire = {'A':'A','C':'C','G':'G','T':'T','[A/C]':'M','[A/G]':'R','[A/T]':'W','[C/G]':'S','[C/T]':'Y','[G/T]':'K','[C/A]':'M','[G/A]':'R','[T/A]':'W','[G/C]':'S','[T/C]':'Y','[T/G]':'K'}

Et j'aimerais obtenir :

sequences = [['TTTKTTT'], ['GGGMTTT']].

Sachant que j'ai plusieurs dizaines de listes dans ma liste sequences contenant quasiment tous au moins une clé de mon dictionnaire.

J'ai commencé ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dictionnaire = {'A':'A',
    	'C':'C',
    	'G':'G',
    	'T':'T',
    	'[A/C]':'M',
    	'[A/G]':'R',
    	'[A/T]':'W',
    	'[C/G]':'S',
    	'[C/T]':'Y',
    	'[G/T]':'K',
    	'[C/A]':'M',
    	'[G/A]':'R',
    	'[T/A]':'W',
    	'[G/C]':'S',
    	'[T/C]':'Y',
    	'[T/G]':'K'}
 
for lettres in str(Sequences):
	print iupacdict.get(lettres)
1) J'obtiens bien le remplacement mais uniquement des caractères seuls (A, T, C, G)
2) J'obtiens un seul caractère par ligne

J'ai donc essayé ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
mregex = ''
for lettres in Sequences:
    mregex += iupacdict.get(lettres)
 
print mregex
 
tosearch = re.compile(str(mregex))
for i in tosearch.findall(Sequences):
    print i
Mais j'obtiens l'erreur suivante :
Traceback (most recent call last):
File "tmp.py", line 84, in <module>
mregex += iupacdict.get(lettres)
TypeError: unhashable type: 'list'

Je ne sais donc pas trop comment m'en défaire, auriez-vous quelques pistes à me donner pour obtenir le résultat souhaité ?

Merci, bonne journée,

Emmanuel.