所以这是一个微不足道的,但希望有趣的问题。我需要使用与现有Hash
的键相同的键和值创建Hash
。这里是我最好的尝试沿着输入例子至今:如何使用哈希中的密钥创建一个新的哈希值,其中每个密钥的值都是密钥本身?
input = {'cat' => 'meow', 'dog' => nil}
Hash[*input.keys.map {|k| [k,k]}.flatten]
#=> {'cat' => 'cat', 'dog' => 'dog'}
我不认为这是特别可读的,所以我想知道是否有使用Ruby这样做的更好,更具表现力的语法,特别是一个这对于维护代码的未来程序员来说可能更具可读性?
这是我会怎么做同样的事情在Python,我觉得这是稍微更具可读性:
dict([[a,a] for a in input])
但是,这可能仅仅是因为我已经习惯了阅读Python!
寻找适用于Ruby 1.8.6的建议,这是我所限制的版本。
可能的重复[如何在Ruby中复制哈希?](http://stackoverflow.com/questions/4157399/how-do-i-copy-a-hash-in-ruby) – 2010-12-10 18:42:12
输入和期望的输出表明我不会问如何复制散列,我将它转换为基于函数的新散列。我很乐意接受对这个问题标题的编辑,这会让这个问题变得更加清晰,但要简明扼要地表达,这是一个棘手的问题。 – Prairiedogg 2010-12-10 18:51:08
“使用哈希中的键创建一个新的哈希,其中每个键的值都是自己的。” – zetetic 2010-12-10 19:00:08