"BA", "two"=>"AAB"}, {"one"=>"AA", "two"=>"BBA"}, {"one"=>"AA", "-6ren">
gpt4 book ai didi

ruby - Ruby 散列上的多字符串元素排序,第一个键降序,第二个键升序

转载 作者:数据小太阳 更新时间:2023-10-29 08:51:05 24 4
gpt4 key购买 nike

给定以下哈希数组:

values = [
{"one"=>"BA", "two"=>"AAB"},
{"one"=>"AA", "two"=>"BBA"},
{"one"=>"AA", "two"=>"BCB"},
{"one"=>"AA", "two"=>"ABA"},
{"one"=>"BC", "two"=>"AAC"},
{"one"=>"AC", "two"=>"AAB"},
{"one"=>"AC", "two"=>"AAA"},
{"one"=>"AB", "two"=>"BCC"}
]

如何获得以下输出:

  {"one"=>"BC", "two"=>"AAC"}
{"one"=>"BA", "two"=>"AAB"}
{"one"=>"AC", "two"=>"AAA"}
{"one"=>"AC", "two"=>"AAB"}
{"one"=>"AB", "two"=>"BCC"}
{"one"=>"AA", "two"=>"ABA"}
{"one"=>"AA", "two"=>"BBA"}
{"one"=>"AA", "two"=>"BCB"}

如果两个键值都指向整数,我可以很容易地做到这一点:

multi_sort = values.sort_by { |x| [-x["one"], x["two"] ] }

使用字符串值执行此操作的语法是什么?

最佳答案

您可能需要编写完整的sort 方法:

values.sort { |a,b| a["one"] == b["one"] ? a["two"] <=> b["two"] : b["one"] <=> a["one"] }

请注意,比较顺序是 b vs a 表示“one”,a vs b对于“两个”。

如果您使用符号键而不是字符串,这可能会更简洁。

关于ruby - Ruby 散列上的多字符串元素排序,第一个键降序,第二个键升序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12820941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com