Ruby 在 Ruby 中创建 Hash 自定义反转函数

标签 ruby arrays hash

Ruby 类 Hash 具有方法“反转”,可以在键和值之间进行“反转”并删除相同的键(在我们的例子中是:“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} 

最佳答案

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

关于Ruby 在 Ruby 中创建 Hash 自定义反转函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17764387/

相关文章:

ruby - 以编程方式编辑 crontab 并强制守护进程刷新

php - 给定一个数组数组,如何从每个值中去除子字符串 "GB"?

javascript - 获取数组作为原始命令行参数

git - 为什么 git log --find-object 对于给定的 blob 会获得两个具有不同内容的文件提交?

arrays - 如何从包含二进制数据的字符串中提取模式

ruby 1.9 : how do I get a byte-index-based slice of a String?

algorithm - 为什么 Perlin 噪声使用哈希函数而不是计算随机值?

java - 打印哈希码来代替数组元素

ruby-on-rails - 如何将 school_id 添加到我的路径中?

c - [x,y] 符号在多维数组访问中意味着什么?