Est-t-il un équivalent de Tableau::échantillon " pour le hachage?
Je suis à la recherche de l'extrait n aléatoire des paires clé-valeur de hachage.
- Il serait utile si vous montrer un exemple de l'entrée de hachage et d'expliquer un peu plus ce que vous tentez de l'utiliser pour. L'accaparement aléatoire paires clé/valeur de hachage est rarement utile, sauf peut-être pour les essais avec des entrées aléatoires à quelque chose, à partir d'un jeu connu. C'est un très étrange à la demande de mon expérience et qui me fait penser à quelque chose de vilain.
- j'ai ce même besoin. j'ai une table de hachage de hachages, elle pourrait aussi avoir été stockée dans un tableau de hachages. et il est logique d'être en mesure de saisir n aléatoire des entrées à partir d'un tableau.
Vous devez vous connecter pour publier un commentaire.
Pour Ruby 2.1,
Je ne sais pas d'une telle méthode. Encore, vous pouvez faire quelque chose comme:
Si vous avez besoin d'un échantillon de plus d'un élément, le code devra être un peu plus compliqué.
EDIT: pour obtenir des paires clé-valeur, au lieu de seulement la valeur que vous pouvez faire quelque chose comme:
Si votre échantillon a un seul élément, vous pouvez utiliser ceci:
Ou si votre échantillon contient plus d'un élément, utilisez ceci:
= h
. Tout le reste est inutile.Lecture au premier rang des réponses, j'irais avec ça dépend:
Si vous voulez goûter à un seul élément de la table de hachage, @Ivaylo Strandjev de la solution ne repose que sur le hachage de recherche et
Array#sample
:De l'échantillon plusieurs de hachage éléments, @sawa réponse exploite
Array#to_h
:Noter que, comme @cadlac mentionne,
hsh.to_a.sample.to_h
ne fonctionnent pas comme prévu. Il va augmenterparce que
Array#sample
dans ce cas renvoie juste l'élément de tableau, et non pas le tableau contenant l'élément de tableau.Une solution de contournement est de sa solution, en fournissant un
n = 1
comme argument:PS: ne cherche pas de upvotes, seul l'ajout d'une explication pour les personnes les plus récents de Ruby.
hsh[hsh.keys.sample].keys
est peut-être la solution, si vous êtes à la recherche pour les sous-clés sous une certaine clé de hachage. Par exemple, unusers['John Doe'] = user_hash
ne sais pas si c'est un plus 'ruby' façon de le faire.Une façon d'y parvenir:
Que l'appel afin d'obtenir un ensemble aléatoire de l'échantillon de la k/v paire:
ou ce de ne pas coder en dur les tableaux longueur:
Exemple: