gpt4 book ai didi

ruby - 如何使用 Ruby 合并和排序多个列表?

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

我有 2 个包含日期和数据的列表。每个列表都按照序列号所示的正确顺序排列。现在我需要将 2 个列表合并在一起并保持所有内容的正确顺序。

例如:

List A
20101001 A data 1 seq1
20101001 A data 2 seq2
20101005 A data 3 seq3

List B
20101001 B data 1 seq1
20101003 B data 2 seq2

etc...

我需要新列表如下所示:

20101001 A data 1 seq1
20101001 A data 2 seq2
20101001 B data 1 seq3
20101003 B data 2 seq4
20101005 A data 3 seq5

我想到的 2 件事是将列表合并在一起并在将它们插入数据库之前应用序列号,或者我可以使用当前序列将它们插入数据库并再次将它们拉回来以将它们合并在一起,但是这似乎是一个额外的步骤,而且很笨拙。

关于解决此问题的最佳方法有什么想法吗?

最佳答案

假设您的列表在 Ruby 数组中,并且列表中的对象定义了属性(例如 obj.sequence_number),合并和排序列表的一种方法是:

首先将列表合并为一个联合:

@merged_list = @list_a | @list_b

然后使用适当的排序规则对 merged_list 进行排序:

@merged_list.sort! {|a, b| a.date <=> b.date # or whatever your sorting rule is... }

编辑:

合并后的数组排序后,可以重新定义sequence_number:

@merged_list.each_with_index {|obj, index| obj.sequence_number = "seq#{index+1}"}

编辑:

如果列表中的对象本身只是简单的数组,同样适用:

@merged_list.sort! {|a, b| a[0] <=> b[0] # or whatever your sorting rule is... }
@merged_list.each_with_index {|obj, index| obj[2] = "seq#{index+1}"}

关于ruby - 如何使用 Ruby 合并和排序多个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908149/

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