根据值出现的次数对Ruby哈希数组进行排序

jue*_*ra7 0 ruby arrays hash

我有一系列哈希,如下所示:

details = [
  {:name => "Alice", :age => 20},
  {:name => "Ted",   :age => 25},
  {:name => "Poppy", :age => 33},
  {:name => "Amy",   :age => 20},
  {:name => "Ted",   :age => 90},
  {:name => "Amy",   :age => 22},
  {:name => "Ted",   :age => 23}
]
Run Code Online (Sandbox Code Playgroud)

我希望能够排序,以便可以根据每个人的名字出现的次数进行排序。例如,输出可能是: "Ted, Ted, Ted, Amy, Amy, Alice, Poppy"

谁能帮忙吗?:)

谢谢

Ama*_*dan 5

获取一个名称计数哈希,然后按名称计数排序:

details.each.with_object(Hash.new(0)) { |e, c| c[e[:name]] += 1 }.
    then { |c| details.sort_by { |e| -c[e[:name]] } }.
    map { |e| e[:name] }
Run Code Online (Sandbox Code Playgroud)