我得到了以下格式的哈希:
{"A"=> 0, "B"=> 0, "C"=> 1, "D"=> 3, "E"=> 0}
我希望这个哈希没有重复的值对。 例如,期望的输出是:
{ "A"=> 0, "C"=>1, "D"=>3 }
答案 0 :(得分:3)
转换为数组,使用uniq
并转换回哈希:
Hash[some_hash.to_a.uniq(&:last)]
反转键和值并反转:
some_hash.invert.invert
使用set
:
require 'set'
set = Set.new
some_hash.select{ |_,v| !set.include?(v).tap{ set << v } }
注意#1 /#3是第一个元素,而#2是最后一个元素
h = {a: 0, b: 1, c: 0, d: 2, e: 1}
Hash[h.to_a.uniq(&:last)] # {a: 0, b: 1, d: 2}
h.invert.invert # {c: 0, d: 2, e: 1}
基准('a'..'zzz'哈希)
user system total real
#1 0.040000 0.010000 0.050000 ( 0.040964)
#2 0.010000 0.000000 0.010000 ( 0.002194)
#3 0.010000 0.000000 0.010000 ( 0.010814)
答案 1 :(得分:2)
你可以这样做:
indexOf()