【问题标题】:Ruby creating Hash custom invert function in RubyRuby 在 Ruby 中创建 Hash 自定义反转函数
【发布时间】:2013-07-20 16:46:53
【问题描述】:

Ruby 类 Hash 有方法“invert”,它可以在键和值之间“反转”并删除相同的键(在我们的例子中是:“1=>:a”)。 h = {a:1,b:2,c:1} => {:a=>1, :b=>2, :c=>1} h.反转 => {1=>:c, 2=>:b}

如何实现自定义哈希方法“c_invert”,它将返回第一对(不是最后一个)重复键 => 值?示例:

> h = {a: 1, b: 2, c: 1} 
=> {:a=>1, :b=>2, :c=>1} 
> h.c_invert 
=> {1=>:a, 2=>:b} 

【问题讨论】:

    标签: ruby arrays hash


    【解决方案1】:
    class Hash
      def c_invert
        Hash[to_a.reverse].invert
      end
    end
    

    class Hash
      def c_invert
        Hash[to_a.reverse.map(&:reverse)]
      end
    end
    

    【讨论】:

      【解决方案2】:
      h =  {:d =>1,:a=>1, :b=> 2, :c=>1}
      Hash[h.map(&:reverse).reverse]
      # => {1=>:d, 2=>:b}
      
      h = {a: 1, b: 2, c: 1} 
      Hash[h.map(&:reverse).reverse]
      # => {1=>:a, 2=>:b}
      

      【讨论】:

        猜你喜欢
        • 2011-06-16
        • 2017-08-02
        • 1970-01-01
        • 2018-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-15
        相关资源
        最近更新 更多