gpt4 book ai didi

ruby - Sort_by Ruby,一个降序,一个升序

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:47 28 4
gpt4 key购买 nike

我已经搜索过这个问题的答案,但没有成功,有一个类似的问题,但答案在这种情况下不起作用,它按数字项目排序。 Similar Question -That did not work我正在尝试使用 ruby​​ 的 sort_by 对一个项目进行降序排序和另一个升序排序。我只能找到一个。

代码如下:

# Primary sort Last Name Descending, with ties broken by sorting Area of interest.
people = people.sort_by { |a| [ a.last_name, a.area_interest]}

任何指导肯定会有所帮助。

示例数据:

输入

  • 罗素,逻辑
  • 欧拉,图论
  • 伽罗瓦,抽象代数
  • 高斯,数论
  • 图灵,算法
  • 伽罗瓦,逻辑

输出

  • 图灵,算法
  • 罗素,逻辑
  • 高斯,数论
  • 伽罗瓦,抽象代数
  • 伽罗瓦,逻辑
  • 欧拉,图论

最佳答案

这是一个简单的方法:

a = [ ['Russell', 'Logic'],           ['Euler', 'Graph Theory'],
['Galois', 'Abstract Algebra'], ['Gauss', 'Number Theory'],
['Turing', 'Algorithms'], ['Galois', 'Logic'] ]

a.sort { |(name1,field1),(name2,field2)|
(name1 == name2) ? field1 <=> field2 : name2 <=> name1 }
#=> [ ["Turing", "Algorithms"], ["Russell", "Logic"],
# ["Gauss", "Number Theory"], ["Galois", "Abstract Algebra"],
# ["Galois", "Logic"], ["Euler", "Graph Theory"] ]

对于多个字段,按第一个降序排序,然后按其他每个按顺序按升序排序:

a = [ %w{a b c}, %w{b a d}, %w{a b d}, %w{b c a}, %w{a b c}, %w{b c b}]
#=> [["a", "b", "c"], ["b", "a", "d"], ["a", "b", "d"],
# ["b", "c", "a"], ["a", "b", "c"], ["b", "c", "b"]]

a.sort { |e,f| e.first == f.first ? e[1..-1] <=> f[1..-1] : f <=> e }
#=> [["b", "a", "d"], ["b", "c", "a"], ["b", "c", "b"],
# ["a", "b", "c"], ["a", "b", "c"], ["a", "b", "d"]]

关于ruby - Sort_by Ruby,一个降序,一个升序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22119121/

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