ruby-on-rails - ruby 根据不同键的相同值删除散列的散列

标签 ruby-on-rails ruby hash

我有一个像这样的散列:

authors = {"7"=> {"id"=>"60"} , "0"=> {"id"=>"60"} , "1"=> {"id"=>"99"}, "8"=> {"id"=>"99"}, "15"=> {"id"=>"19"} }

我想合并每个散列,其中该散列中散列的 id 是重复的(或者删除每个第二个散列具有相同散列 id 的散列)。

在这种情况下,我想结束

authors = {"7"=> {"id"=>"60"} , "1"=> {"id"=>"99"}, "15"=> {"id"=>"19"}}

关于哈希的哈希排序有很多问题,我一直在努力解决这个问题,但我不知道如何实现。

最佳答案

这里有两种方式。

#1

require 'set'

st = Set.new
authors.select { |_,v| st.add?(v) } 
  #=> {"7"=>{"id"=>"60"}, "1"=>{"id"=>"99"}, "15"=>{"id"=>"19"}} 

#2

authors.reverse_each.with_object({}) { |(k,v),h| h[v] = k }.
  reverse_each.with_object({}) { |(k,v),h| h[v] = [k] }
  #=> {"7"=>[{"id"=>"60"}], "1"=>[{"id"=>"99"}], "15"=>[{"id"=>"19"}]}

authors.reverse_each.to_h.invert.invert.reverse_each.to_h

关于ruby-on-rails - ruby 根据不同键的相同值删除散列的散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42355763/

相关文章:

ruby-on-rails - Rails 生成器传递参数数组

ruby-on-rails - 在生产环境的服务器上部署sidekiq

php - 向 PHP 脚本发送请求时出现错误符号

c# - 在 Java 和 C# 中计算 SHA-1 哈希

ruby-on-rails - Nokogiri/Rails/zlib1g-dev 的问题

ruby-on-rails - 运行长时间延误的铁路的最佳方式

mysql - 试图在 MySQL 数据库中设置日期时间字段的 Ruby 错误

ruby-on-rails - Base64编码字符串到文件(Ruby on Rails)

ruby - 不要将所需文件包含到 vim omnicompletion 中

javascript - 简化 JS,因此不需要在脚本中硬编码哈希