Donc, c'est une question triviale, mais j'espère amusant. Je dois faire un Hash
avec des clés et des valeurs identiques à partir des clés d'un Hash
existant. Voici une entrée exemple avec ma meilleure tentative à ce jour:Comment utiliser les clés d'un Hash pour créer un nouveau Hash où la valeur de chaque clé est la clé elle-même?
input = {'cat' => 'meow', 'dog' => nil}
Hash[*input.keys.map {|k| [k,k]}.flatten]
#=> {'cat' => 'cat', 'dog' => 'dog'}
Je ne pense pas que ce soit particulièrement lisible, donc je me demandais s'il y avait une meilleure syntaxe plus expressive pour ce faire en Ruby, en particulier un qui pourrait être plus lisible pour les futurs programmeurs qui maintiennent le code?
Voilà comment je ferais la même chose en Python, et je trouve qu'il est un peu plus lisible:
dict([[a,a] for a in input])
Mais cela pourrait être juste parce que je suis habitué à lire Python!
Vous cherchez des suggestions qui fonctionneront avec Ruby 1.8.6, qui est la version à laquelle je suis contraint.
duplication possible de [Comment copier un hachage dans Ruby?] (Http://stackoverflow.com/questions/4157399/how-do-i-copy-a-hash-in-ruby) –
la sortie désirée démontre que je ne demande PAS comment copier un hachage, je le transforme en un nouveau hash basé sur une fonction. J'accepterais volontiers des modifications au titre de la question pour le rendre plus clair, mais c'est un problème difficile à exprimer de façon concise. – Prairiedogg
"Utilisez les touches d'un Hash pour créer un nouveau Hash où la valeur de chaque clé est elle-même." – zetetic