在ruby中,按类别或类型将列表项分开
我有两份清单:在ruby中,按类别或类型将列表项分开,ruby,arrays,list,split,Ruby,Arrays,List,Split,我有两份清单: a = [1,2,3] b = ["a","b","c"] 我的清单是: l = [a,b].flatten 所以l=[1,2,3,“a”,“b”,“c”] 我正在寻找一种按列表中项目类型拆分列表的优雅方法,以便将a和b恢复原状 我可以使用列表中的每一项进行测试,但这在运行时和代码方面似乎都不太有效。您可以使用,然后从生成的哈希中提取数组: >> by_class = l.group_by(&:class) => {Integer=>[1,
a = [1,2,3]
b = ["a","b","c"]
我的清单是:
l = [a,b].flatten
所以l=[1,2,3,“a”,“b”,“c”]
我正在寻找一种按列表中项目类型拆分列表的优雅方法,以便将a
和b
恢复原状
我可以使用列表中的每一项进行测试,但这在运行时和代码方面似乎都不太有效。您可以使用,然后从生成的哈希中提取数组:
>> by_class = l.group_by(&:class)
=> {Integer=>[1, 2, 3], String=>["a", "b", "c"]}
>> a = by_class[Fixnum]
=> [1, 2, 3]
>> b = by_class[String]
=> ["a", "b", "c"]
如果您知道您只有Fixnums和string,那么您可以使用:
您可以使用,然后将数组从结果哈希中拉出:
>> by_class = l.group_by(&:class)
=> {Integer=>[1, 2, 3], String=>["a", "b", "c"]}
>> a = by_class[Fixnum]
=> [1, 2, 3]
>> b = by_class[String]
=> ["a", "b", "c"]
如果您知道您只有Fixnums和string,那么您可以使用: