Outils pour utilisateurs

Outils du site


nsi:premiere:dictionnaires

Ceci est une ancienne révision du document !



Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Dictionnaires

Problématique

Un tableau permet d'organiser des données en associant un item à un indice.

tableau[indice]item de rang i

Exemple : Jours de la semaine

jours = ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"]

Avec ce tableau on obtient facilement le jour d'indice 5 :

>>> jours[5]
"ven"

Mais comment faire des associations de type différent ?

Exemple : Gentilé

Par exemple, on souhaite associer le nom d'une commune avec son gentilé (nom des habitants) :

gentiles = [
    ("Paris", "Parisien"),
    ("Marseille", "Marseillais"),
    ("Saint-Denis", "Dionysien"),
    ("Château-Thierry", "Castelthéodoricien")
]

Comment obtenir le gentilé pour "Saint-Denis" ?

C'est possible mais cela suppose de parcourir le tableau à la recherche de "Saint-Denis". On irait plus vite si on pouvait écrire quelque chose comme gentiles["Saint-Denis"]
def ville_to_gentile(ville, gentiles):
    """
    ville: ville recherchée
    gentiles: liste des paires (ville, gentilé)
    renvoie le gentilé associé à une ville, None si pas trouvé
    """
    for v, g in gentiles:
        if v == ville:
            return g
    return None # pas trouvé

Cette méthode fonctionne mais trouver le gentilé associé à une ville peut prendre du temps puisqu'il faut parcourir le tableau jusqu'à trouver la ville.

Dictionnaire

Un dictionnaire consiste justement à créer de telles associations. On pourra écrire :

gentiles = {
    "Paris":"Parisien",
    "Marseille":"Marseillais",
    "Saint-Denis":"Dionysien",
    "Château-Thierry":"Castelthéodoricien"
}

Et pour obtenir le gentilé de Saint-Denis il suffit d'écrire

>>> gentiles["Saint-Denis"]
"Dionysien"

Clé et valeur

Attention : Dans le dictionnaire, les deux éléments d'une paire n'ont pas le même rôle.

La partie à gauche de : est la clé, à droite c'est la valeur

>>> gentiles.keys()
['Paris', 'Marseille', 'Saint-Denis', 'Château-Thierry']
>>> gentiles.values()
['Parisien', 'Marseillais', 'Dionysien', 'Castelthéodoricien']

Et donc cette commande renvoie une erreur :

>>> gentiles["Dionysien"]
KeyError: "Dionysien"

car "Dionysien" est une valeur, pas une clé !

On retrouve la différence entre indice et valeur dans un tableau. L'indice d'un tableau est toujours un nombre entier naturel. Une clé de dictionnaire est comme l'indice mais la clé peut être autre chose qu'un entier.

En Python, la clé peut être de types int, float, str, tuple.

Un peu de technique : Python transforme la clé en utilisant la représentation de la donnée en mémoire et en utilisant une fonction mathématique, un hash. Ainsi, tout se passe comme si nous avions un indice entier. Il est donc important que la clé ait une représentation mémoire fixe. Un list ne convient pas car on peut modifier son contenu.

Manipulations élémentaires

On poursuit les exemples avec

gentiles = {
    "Paris":"Parisien",
    "Marseille":"Marseillais",
    "Saint-Denis":"Dionysien",
    "Château-Thierry":"Castelthéodoricien"
}

Nombre de paires clé-valeur

>>> len(gentiles)
4

Appartenance

in permet de savoir si une clé est présente.

>>> "Paris" in gentiles
True
>>> "Lille" in gentiles
False
>>> "Dionysien" in gentiles
False

Attention, "Dionysien" est bien dans le dictionnaire mais en tant que valeur, pas en tant que clé.

Lecture

On retrouve la même syntaxe que pour les p-uplets et les tableaux

>>> gentiles["Château-Thierry"]
'Castelthéodoricien'
>>> gentiles["Lille"]
KeyError

Pour éviter les erreurs, on peut aussi utiliser :

>>> gentiles.get("Château-Thierry")
'Castelthéodoricien'
>>> gentiles.get("Lille")

le dernier ne renvoie rien (renvoie None) car "Lille" n'est pas une clé du dictionnaire. Ne lève pas d'erreur.

Ajout et modification

>>> gentiles["Lille"] = "Lillois"
>>> gentiles["Paris"] = "Parisienne"

Dans le premier cas, c'est une création de paire clé-valeur, dans le deuxième cas, c'est une modification.

Suppression

>>> del gentiles["Château-Thierry"]

Énumération - boucle for

Parcourir les éléments d'un dictionnaires. Comme pour un tableau, on peut désirer parcourir les clés, les valeurs ou les deux à la fois.

Parcourir par clé

for key in gentiles:
    # boucle se répète pour chaque clé
    # key prendra les valeurs "Paris", "Saint-Denis"...

Attention ! Dans un dictionnaire, l'ordre n'est pas garanti ! Ce n'est pas parce que on a créé le dictionnaire ainsi :

gentiles = {
    "Paris":"Parisien",
    "Marseille":"Marseillais",
    "Saint-Denis":"Dionysien",
    "Château-Thierry":"Castelthéodoricien"
}

que les clés seront parcourues dans l'ordre "Paris", "Marseille", "Saint-Denis,.... L'ordre est imprévisible.

Parcourir par valeurs

Peu utile.

for item in gentiles.values():
    # répété pour chaque paire, ordre imprévisible
    # item prend les valeurs "Parisien", "Marseillais"...

Parcourir par paires

for key, item in gentiles.items():
    # parcours simultané des clé et valeurs
    # key vaut la clé, item la valeur associée
    # toujours dans un ordre imprévisible...

C'est l'équivalent de la situation rencontrée avec les tableaux :

for indice, item in enumerate(tableau):
    # parcours simultané des indices et valeurs

Tuple nommé

Le programme de NSI fait référence à des tuples nommés.

Ce type de donnée n'existe pas nativement en Python (il faut importer une bibliothèque)

L'idée du programme est simplement d'utiliser, dans certains cas, des dictionnaires comme des tuples.

Cependant attention : un dictionnaire est mutable mais pas un tuple (on ne peut pas modifier un tuple une fois créé), c'est d'ailleurs ce qui fait la différence entre un tuple et un tableau.

Efficacité d'un dictionnaire

Comme on l'a dit, on pourrait créer un tableau de paires de valeurs ce qui permettrait, en parcourant le tableau, de retrouver tout ce que l'on veut :

gentiles = [
    ("Paris", "Parisien"),
    ("Marseille", "Marseillais"),
    ("Saint-Denis", "Dionysien"),
    ("Château-Thierry", "Castelthéodoricien")
]

Mais (déjà dit) pour trouver le gentilé de "Saint-Denis" (par exemple) il faut parcourir le tableau. Cela peut-être long si le tableau est grand.

Dans le cas d'un tableau, par exemple :

jours = ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"]

L'accès à un élément par son indice est direct :

>>> jours[5]
"ven"

C'est à dire qu'il n'est pas nécessaire de parcourir "dim", "lun", etc. pour atteindre "ven", le programme saute directement à la bonne position.

Le dictionnaire permet de faire la même chose.

La suite est un peut technique et est réservée au élèves plus avancés.

De façon cachée pour l'utilisateur, quand on crée un dictionnaire, Python crée un tableau avec une taille fixée, par exemple 3.

Mais les clés de notre dictionnaire ne sont pas des nombres et ne sont donc pas des indices acceptables. Alors Python fait un calcul avec la clé :

>>> hash("Paris")
7211877366768910205

Il faut comprendre que "Paris", en mémoire est représenté comme un code binaire et que ce code binaire peut-être interprété comme un nombre et que l'on peut donc produire un nombre avec. Ce nombre doit servir d'indice pour notre tableau. Mais notre tableau n'a que 3 cases alors :

>>> hash("Paris") % 3
2

On place donc la paire ("Paris", "Parisien") au rang 2 du tableau.

Faisant le même travail avec les autres, Python créé (toujours de façon cachée) :

[ [],
  [("Saint-Denis", "Dionysien")],
  [("Paris", "Parisien"), ("Marseille", "Marseillais")]
]

Ensuite quand je demande gentiles["Paris"], le calcul hash("Paris") % 3 nous dit que l'on doit regarder à la case 2 et chercher dans les items qui s'y trouvent.

Cela donne de bons résultats si chaque case est peu remplie. Python peut modifier la taille du tableau si le nombre d'éléments augmente, tout cela sans que l'utilisateur ait quoi que ce soit à faire.

Ce mécanisme est appelé une table de hachage.

2021/04/25 18:04 · goupillwiki

Exercices

Exercice 1

On définit le dictionnaire suivant

Les retours à la ligne servent à la lisibilité, ils ne sont pas obligatoires.

d = {
    "France":"fr",
    "Royaume-Uni":"uk",
    "États-Unis":"us"
}

Que renvoient les commandes suivantes :

len(d)
type(d)
d["France"]
d["france"]
d["fr"]
"Italy" in d
"France" in d
"fr" in d
d["Espagne"]
d.keys()
d.values()
d.items()

Exercice 2 : Bibliothèques csv et panda

Vous disposez d'un fichier worldcities.csv contenant les données sur un ensemble de villes.

csv signifie comma separated values, c'est un fichier où les données sont séparées par des virgules ou des points-virgules.

Le fichier est un simple fichier texte qui ressemble à cela :

city;city_ascii;lat;lng;country;iso2;iso3;admin_name;capital;population;id
Tokyo;Tokyo;35.6850;139.7514;Japan;JP;JPN;Tōkyō;primary;35676000;1392685764
New York;New York;40.6943;-73.9249;United States;US;USA;New York;;19354922.0;1840034016
Mexico City;Mexico City;19.4424;-99.1310;Mexico;MX;MEX;Ciudad de México;primary;19028000;1484247881
...

Si on l'ouvrait avec un éditeur spécialisé comme un tableur, on aurait ce type de mise en forme :

citycity_asciilatlngcountryiso2iso3admin_namecapitalpopulationid
TokyoTokyo35.6850139.7514JapanJPJPNTōkyōprimary356760001392685764
New YorkNew York40.6943-73.9249United StatesUSUSANew York19354922.01840034016
Mexico CityMexico City19.4424-99.1310MexicoMXMEXCiudad de Méxicoprimary190280001484247881

La première ligne est une entête qui sert à préciser le contenu des colonnes.

Nous allons voir ici comment les bibliothèques csv et panda nous permettent d'accélérer le travail.

  • Téléchargez le fichier worldcities.csv
  • Téléchargez le fichier city1.py ci-dessous
city1.py
# import de la bibliothèque
import csv
# Ouverture du fichier en mode lecture, avec l'encodage utf8.
file = open('worldcities.csv', 'r', encoding='utf8')
# création d'un objet de la bibliothèque csv chargé de lire
# le contenu de fichier.
# On précise le type de séparateur utilisé.
reader = csv.reader(file, delimiter=';')
# reader est une sorte de tête de lecture.
# Nous allons faire avancer la tête de lecture pour récupérer
# les données du fichier et les stocker dans un tableau.
villes = []
for row in reader:
    villes.append(row)
# on peut refermer le fichier.
file.close()
# pour illustrer, demandons l'affichage des 5 premières lignes
for i in range(5):
    print(villes[i])
  • Exécutez et visualisez le résultat. Que constate-t-on ?
    • villes est un tableau contenant des lignes. Chaque ligne est également un tableau.
    • La première ligne du tableau est la ligne d'entête. Elle est peu exploitable.
    • Si on veut accéder au nom de pays de Tokyo, il faut déjà savoir que Tokyo est à la ligne 1 puis que le nom de pays est à la colonne 4 et demander villes[1][4]. Ce n'est pas tellement pratique.

Utilisation de dictionnaires.

  • On recommence, téléchargez le fichier city2.py
city2.py
# même début
import csv
file = open('worldcities.csv', 'r', encoding='utf8')
# l'objet de lecture est différent
# celui-ci produit des dictionnaires
reader = csv.DictReader(file, delimiter=';')
# chaque ligne lue produira un dict
# mais l'ensemble des lignes formera un tableau
villes = []
for row in reader:
    villes.append(dict(row))
# fermeture du fichier
file.close()
# affichage des 5 premières lignes
for i in range(5):
    print(villes[i])
  • Exécutez et visualisez le résultat. Que constate-t-on ?
    • villes est toujours un tableau mais un tableau constitué de dictionnaires.
    • La première ligne du fichier, l'entête, n'est pas la première ligne de villes.
    • La ligne d'entête sert à former les clés des différents dictionnaires.

Ainsi, si on veut atteindre le nom de de pays pour Tokyo, on écrira villes[1]['country']

L'utilisation de dictionnaires permet d'associer une étiquette à chaque colonne ce qui rend l'utilisation du fichier plus simple. On n'a pas besoin de s'ennuyer à chercher le numéro de colonne pour le pays, on indique directement `'country'`.

Encore mieux avec panda

Panda est une bibliothèque très puissante et beaucoup utilisée pour le traitement de données.

Notez que c'est une spécificité de Python : on dispose de bibliothèque très puissantes qui permettent de réduire grandement le travail du programmeur.
  • Téléchargez le fichier city3.py
city3.py
import pandas
villes = pandas.read_csv("worldcities.csv", delimiter=";")

C'est tout ! villes n'est pas un tableau. C'est un objet défini par panda, plus compliqué et plein de fonctionnalités. Voici quelques exemples que vous pouvez entrer en console après exécution du script :

>>> villes.loc[10] # affichage de l'item au rang 10
>>> villes.log[10]['population'] # population de cette ville.

Notez que populationa été converti en float automatiquement par panda ce que ne faisait pas csv.

>>> villes.nlargest(10, 'population')
>>> villes[villes.city == "Paris"]
>>> villes['population'].describe()

Ceci n'est qu'un aperçu, panda a beaucoup de fonctionnalités.

Exercice 3

Un brin d'ADN est une succession de bases nucléiques symbolisées par A, T, G, C pour adénine, thymine, guanine, cytosine. Une fonction de l'ADN est de coder les protéines que la cellule sera chargée de synthétiser. Pour se faire, un brin d'ADN complémentaire est créé :

A ⇒ U (uracile), T ⇒ A, G ⇒ C, C ⇒ G

puis chaque triplet - codon - de bases code une acide aminé.

Par exemple, UAU code pour Y : tyrosine

On vous fournit un fichier codons.csv précisant toutes les associations codon ⇒ acide aminé. Voici les premièrs lignes du fichier.

codonSymboleAcide aminé
UUUFPhenylalanine
UUCFPhenylalanine
UUALLeucine
UUGLLeucine
CUULLeucine

Complétez le fichier adn.py ci-dessous :

adn.py
import csv
file = open('codons.csv', 'r', encoding='utf8')
reader = csv.DictReader(file, delimiter=';')
codons = []
for row in reader:
    codons.append(dict(row))
file.close()
 
def testBrin(brinADN:str) -> bool:
   '''
   Reçoit en entrée un brin d'ADN sous forme d'une chaîne.
   Renvoie True si le brin est valide:
       - nombre de lettres multiple de 3
       - composé des lettres ATGC
    '''
 
brinComplementaire(brinADN:str) -> str:
    '''
    Reçoit en entrée un brin d'ADN sous forme d'une chaîne.
    Renvoie la chaîne correspondant au brin complémentaire.
    '''
 
def toAcides(brinADN:str) -> str:
    '''
    Reçoit en entrée un brin d'ADN sous forme d'une chaîne.
    Renvoie la chaîne correspondant à la suite d'acides aminés.
    '''
nsi/premiere/dictionnaires.1643733043.txt.gz · Dernière modification : de goupillwiki