微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用ruby生成值1到31的哈希值?

如何解决使用ruby生成值1到31的哈希值?

| 我如何生成像这样的哈希?
{1 => 1,2 => 2,3 => 3}
从1到31有循环。     

解决方法

        例如:
(1..31).inject({}) { |h,k| h[k] = k; h}
如果您想使用适用于所有数字的哈希,则可以采用以下方式:
>> h = Hash.new { |h,k| h[k] = k } #=> {}
>> h[221] #=> 221
    ,        
def generate_hash r
  Hash[r.zip r]
end

generate_hash (1..31)
    ,        另一个单线:
Hash[(1..31).map {|i| [i,i]}]
    ,        尝试这个
h = Hash.new()
for i in 1..31
    h[i] = i
end
另外,该问题未指定顺序是否重要,但是如果顺序很重要,则可能需要考虑其他排序选项,如此处所述 按值对哈希哈希进行排序(并返回哈希,而不是数组)     ,        
(1..31).inject({}) { |hash,item| hash.merge(item => item) }
    ,        你为什么做这个?您这样做是因为一个月中有31天吗? 无论如何:
hash = Hash.new() {|_,key| key if (1..31).include?(key) }
hash[1] # => 1
hash[31] # => 31
hash[32] # => nil
编辑:现在与迈克尔·科尔打高尔夫球的代码!     ,        我的小贡献:
Hash[1.upto(31).zip 1.upto(31)]
要么
Hash[(1.upto 31).zip(1.upto 31)]
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。