Valeur random de clef random du dictionnaire

Résolu
jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -  
jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

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







EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, ton code fonctionne-t-il bien, sans message d'erreur?
0
jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   1
 
bonjour yg,

en fait le random.choice() renvoi une clé aléatoire, donc ok.
cependant, comme cette clé contient des valeurs, je me demande bien comment sélectionner une seule valeur aléatoirement à partir de la clé choisie préalablement. Soit à partir du résultat de la fonction précédente.
0
jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   1 > jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   1
 
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
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention  
 
que vois-tu quand tu fais
print(random.choice(tuple(dictionnaire.values())))
?
ou bien
print(dictionnaire.get(random.choice(dictionnaire.keys())))
0
jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   1
 
print(random.choice(tuple(dictionnaire.values())))? 
renvoi toute les valeurs
La seconde également
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
et ainsi?
import random

dictionnaire = {
'clef':['valeur1', 'valeur2'],
'clef1':['valeur11','valeur12']
}
print(random.choice(random.choice(tuple(dictionnaire.values()))))
0
jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   1
 
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 suivante
print(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.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention  
 
plus graduel:
import random

dictionnaire = {
'clef':['valeur1', 'valeur2'],
'clef1':['valeur11','valeur12']
}
ak= tuple(dictionnaire.keys())
rk=random.choice(ak)
vrk=dictionnaire.get(rk)
rvrk=random.choice(vrk)
print (rk, vrk, rvrk)
chez moi, cela ne fonctionne pas sans faire tuple()
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention  
 
si tu demandes une explication pour un message d'erreur, il est utile de partager le programme complet, et d'indiquer à quelle ligne l'erreur se produit.
0
jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   1
 
merci,

cela a l'air tout à fait juste.
C'est parfait, merci.

Il ne me reste plus qu'à gérer les fichiers, maintenant.

Merci pour l'aide fournie que tu as pris sur ton temps personnel
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > jeremyccm Messages postés 50 Date d'inscription   Statut Membre Dernière intervention  
 
peux-tu alors marquer le sujet comme résolu, via la roue dentée à droite du titre?
0