Ruby 排序和消除重复项
我有一个列表,需要按最流行的元素进行排序。有没有一种方法可以实现这一点?
重新排序后,我还需要删除重复项。我心里有一个这样的函数的想法,但它似乎效率低下,那么有内置的方法可以帮助解决这个问题吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我有一个列表,需要按最流行的元素进行排序。有没有一种方法可以实现这一点?
重新排序后,我还需要删除重复项。我心里有一个这样的函数的想法,但它似乎效率低下,那么有内置的方法可以帮助解决这个问题吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
就这样吗?
Like that?
Array#sort
方法采用可选谓词来比较两个元素,因此...要消除重复项,请使用
Array#uniq
。将它们粘合在一起,
或者简单地
The
Array#sort
method takes an optional predicate to compare two elements, so...To eliminate duplicates, use
Array#uniq
.To glue them together,
Or simply
迭代列表以构建映射
item ->; 的哈希值。次数
只需要访问列表中的所有元素一次,那么哈希操作将是常数时间,所以 O(n),这看起来并不那么昂贵。Iterating through the list to build a hash that maps
item -> number of times
just need one visit of all elements of the list, then operations with the hash would be constant time, so O(n), that doesn't seem so expensive.uniq 方法采用一个块,因此您可以指定对象的哪个“属性”必须是 uniq。
The uniq method takes a block, so you can specify which 'property' of your object has to be uniq.
这些答案中的大多数对我来说都不起作用,除了格伦·麦当劳(直到我发布这个答案)
我在其他地方找到了我自己问题的答案
Most of these answers didn't work for me, except for Glenn Mcdonalds (up until i posted this answer)
I found an answer to my own question somewhere else like this