Valeur random de clef random du dictionnaire
Résolu
jeremyccm
Messages postés
62
Statut
Membre
-
jeremyccm Messages postés 62 Statut Membre -
jeremyccm Messages postés 62 Statut Membre -
Bonjour,
Cette fonction permet de choisir aléatoirement une clef dans un dictionnaire.
Dans le même esprit, comment est-il possible, en suite, de choisir, aléatoirement, une valeur dans la clef au préalablement choisie aléatoirement ?
car il semble qu'en affectant la fonction suivante comme étant une variable, on se retrouve avec un 'str' et de ce fait toute opération soit inutilisable:
La première idée était de changer les clefs en list... est-ce une bonne voie ?
Cordialement
PS le titre n'est pas clair, pas facile
Quand il y aura un mur sur ta route, retournes sur tes pas.
Au départ, il y avait une autre route juste à côté, la bonne.
import random
dictionnaire = {
'clef':'valeur1' 'valeur2',
'clef1':'valeur1' 'valeur2'
}
random.choice(dictionnaire.keys())
Cette fonction permet de choisir aléatoirement une clef dans un dictionnaire.
Dans le même esprit, comment est-il possible, en suite, de choisir, aléatoirement, une valeur dans la clef au préalablement choisie aléatoirement ?
car il semble qu'en affectant la fonction suivante comme étant une variable, on se retrouve avec un 'str' et de ce fait toute opération soit inutilisable:
a=random.choice(dictionnaire.keys())
La première idée était de changer les clefs en list... est-ce une bonne voie ?
Cordialement
PS le titre n'est pas clair, pas facile
Quand il y aura un mur sur ta route, retournes sur tes pas.
Au départ, il y avait une autre route juste à côté, la bonne.
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, ton code fonctionne-t-il bien, sans message d'erreur?-
-
avec
random.choice(dictionnaire.values())
on se retrouve avec l'ensemble des valeurs de n'importe quelle clé, ce qui n'est pas mon souhait.
Ce qu'il faut c'est que, aléatoirement, pour une des deux clés il y ait une seule valeur associée.
en quelques mots, réinjecter le résultat de la clé dans l'opération sur la valeur. -
comment fait-on par exemple pour choisir une Paire clé valeur au hasard. ça paraît évident qu'ensuite je pourrai plus facilement choisir une valeur au hasard puisqu'il n'y aura plus qu'une clé. j'ai une idée avec l'instruction random.choice(dictionnaire.items()) qui me permettrait de sortir une seule paire clé Valeur sous la forme d'un tupple. mais le tupple devra être définie si je souhaite invoquer la fonction random. je tourne en rond
-
-
-
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
et ainsi?import random dictionnaire = { 'clef':['valeur1', 'valeur2'], 'clef1':['valeur11','valeur12'] } print(random.choice(random.choice(tuple(dictionnaire.values()))))-
exact, l'oubli des virgules.
merci oui cela marche, mais comment vérifier à l'écran que la clé soit bien celle de la valeur retournée ?
Car l'instruction suivanteprint(random.choice(random.choice(tuple(dictionnaire.values()))))
bien qu'elle soit très interessante, ne permet pas de faire les choses de manière graduelle. Par exemple, si en premier on sélectionne aléatoirement une clé, et qu'un raw_input() vient là pour permettre une validation ou une demande, comment, à partir de la clé trouvée on pourrais ensuite sélectionner aléatoirement une valeur ?
Un détaille, mais si possible il faut que l'on sache d'abord quelle est la clé, et ensuite une valeur correspondante est sélectionnée aléatoirement.
je me penche sur la question en même temps, tuple() change la liste des valeurs du dico en tuple, mais est-ce utile ?
dictionnaire = {}
dictionnaire['clef']='valeur1', 'valeur2'
dictionnaire['clef1']='valeur1', 'valeur2'
J'ai essayé quelque chose, j'ai eu le message d'erreur suivant:built-in method keys of dict object at 0x10c5dc5c
En tout cas yg_be merci de me faciliter la vie comme tu fais. -
-
-
-
-