Valeur random de clef random du dictionnaire [Résolu] - Forum Python

Valeur random de clef random du dictionnaire Je n'arrive pas a modifier la valeur d'une clef de registre » Forum - Windows La fonction random ne renvoit que des valeurs faibles (Résolu) » Forum - C++ Excel Random sur 6 valeurs amélioré (Résolu) » Forum - Excel Problème de random qui donne des valeurs injustes [Résolu] (Résolu) » Forum - Pascal Garder la même valeur de Math.random() - java [Résolu] (Résolu) » Forum - Java

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





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.

Forum

Valeur random de clef random du dictionnaire Je n'arrive pas a modifier la valeur d'une clef de registre » Forum - Windows La fonction random ne renvoit que des valeurs faibles (Résolu) » Forum - C++ Excel Random sur 6 valeurs amélioré (Résolu) » Forum - Excel Problème de random qui donne des valeurs injustes [Résolu] (Résolu) » Forum - Pascal Garder la même valeur de Math.random() - java [Résolu] (Résolu) » Forum - Java

Web: www.shapebootstrap.net

14 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

bonjour, ton code fonctionne-t-il bien, sans message d'erreur?

Reply
réponses:
  • auteur

  • jeremyccm

    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.

  • jeremyccm

    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.

  • jeremyccm

    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

    que vois-tu quand tu fais

    print(random.choice(tuple(dictionnaire.values())))
    ?
    ou bien
    print(dictionnaire.get(random.choice(dictionnaire.keys())))

  • jeremyccm

    print(random.choice(tuple(dictionnaire.values())))? 
    renvoi toute les valeurs
    La seconde également

  • yg_be

    c'était pour te faire comprendre qu'il n'y avait qu'une seule valeur, et pour te montrer l'utilité de get.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

et ainsi?

import random  dictionnaire = { 'clef':['valeur1', 'valeur2'], 'clef1':['valeur11','valeur12'] } print(random.choice(random.choice(tuple(dictionnaire.values()))))

Reply
réponses:
  • auteur

  • jeremyccm

    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.

  • yg_be

    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()

  • yg_be

    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.

  • jeremyccm

    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

  • yg_be

    peux-tu alors marquer le sujet comme résolu, via la roue dentée à droite du titre?

  • jeremyccm

    c'est fait

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed