【问题标题】:Change all key names in a hash to numbered names (0, 1, 2, 3...)将散列中的所有键名更改为编号名称(0、1、2、3...)
【发布时间】:2016-06-20 09:50:37
【问题描述】:

我需要将散列的键名更改为编号名称。例如

hash = {"0"=>["val", "val"], "1"=>["val"], "6"=>["val", "val"], "7"=>["val"]}

进入

hash = {"0"=>["val", "val"], "1"=>["val"], "2"=>["val", "val"], "3"=>["val"]}

编号将从零开始,一直持续到散列结束。哈希长度是随机的。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 hash


    【解决方案1】:
    new_hash = hash.values.map.with_index { |value, idx| [idx.to_s, value] }.to_h
    #=> {"0"=>["val", "val"], "1"=>["val"], "2"=>["val", "val"], "3"=>["val"]}
    

    【讨论】:

      【解决方案2】:
      key = -1
      
      Hash[hash.map { |_,v| [(key = key.next).to_s, v] }]
      

      hash.map { |_,v| [(key = key.next).to_s, v] }.to_h
      

      【讨论】:

        猜你喜欢
        • 2021-11-15
        • 2019-05-02
        • 1970-01-01
        • 2022-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多