您的位置:首页 > 编程语言 > Ruby

Ruby Arrays: keep repeated values only from the end of an array of arrays

2014-06-21 14:14 501 查看
If I have an array of arrays:

[[1, "foo"], [2, "bar"], [3, "foo"], [4, "foo"], [5, "bar"], [6, "baz"]]

How can I eliminate the repeated values, keeping the ones at the END of the array, resulting in:

[[4, "foo"], [5, "bar"], [6, "baz"]]
a.reverse.uniq(&:last).reverse
=> [[4, "foo"], [5, "bar"], [6, "baz"]]

arr.group_by{|x|x[1]}.values.map(&:last)

array = [[1, "foo"], [2, "bar"], [3, "foo"], [4, "foo"], [5, "bar"], [6, "baz"]]
Hash[array].invert.map { |k,v| [v,k] }

注:invert
颠倒Hash的k-v对。


h = {:a => 1,:b => 1}        #=> {:a=>1, :b=>1}


x = h.invert                      #=> {1=>:b}
invert方法可以颠倒Hash的键-值,可是因为Hash键的唯一性,可能会发生上例那样的数据丢失!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐