UPDATE:
list = {'first' => 'BMW', 'second' => 'BMW', 'third' = 'MERCEDES'; }
А нужно мне:
list = {'first' => 'BMW', 'third' = 'MERCEDES'; }
Если пофиг какой ключ будет выбран, то
list.invert.invert => {"second"=>"BMW", "third"=>"MERCEDES"}
Если не пофиг, то
Hash[list.to_a.uniq{ |v| v.last}] => {"first"=>"BMW", "third"=>"MERCEDES"}
list['first'] = 'BMW';
list['second'] = 'BMW';
list['third'] = 'MERCEDES';
Как сортировать этот хэш по уникальности???
Хэш - это ассоциативный массив. У него нет сортировки.
Я правильно понял, что вам нужно выбрать только те пары ключ, значение, у которых значение уникально во всем хэше? Если да, то так:
h = { a: 'bmw', b: 'bmw', c: 'lada kalina' }
count = h.values.group_by(&:to_s)
h.select{ |_, v| count[v].size == 1 } => {:c=>"lada kalina"}
Сортировать тоже можно, но получится массив:
h.sort_by{ |_, v| count[v].size } => [[:c, "lada kalina"], [:b, "bmw"], [:a, "bmw"]]