2, :species =>"Canis lu-6ren">
gpt4 book ai didi

Ruby 哈希数组;只保留包含特定键=>值对的第一个元素

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

假设我在 Ruby 中有以下哈希数组:

a = [{:id => 1, :species =>"Homo sapiens"},
{:id => 2, :species =>"Canis lupus"},
{:id => 3, :species =>"Bos taurus"},
{:id => 4, :species =>"Homo sapiens"},
{:id => 5, :species =>"Pan troglodytes"},
{:id => 6, :species =>"Bos taurus"}]

仅保留包含每个 :species 键的第一个元素(即丢弃任何重复物种名称的元素)的最惯用和简洁的方法是什么?对于上面的示例,所需的结果如下所示:

b = [{:id => 1, :species =>"Homo sapiens"},
{:id => 2, :species =>"Canis lupus"},
{:id => 3, :species =>"Bos taurus"},
{:id => 5, :species =>"Pan troglodytes"}]

我可以通过首先将所有物种读入第二个数组,使用 uniq! 删除重复项,然后遍历原始数组以获取包含第二个数组中表示的每个物种的第一个元素来完成此操作,但这看起来很不像 Ruby,而且看起来很丑。

最佳答案

你只需要使用 Array#uniq :-

a = [{:id => 1, :species =>"Homo sapiens"},
{:id => 2, :species =>"Canis lupus"},
{:id => 3, :species =>"Bos taurus"},
{:id => 4, :species =>"Homo sapiens"},
{:id => 5, :species =>"Pan troglodytes"},
{:id => 6, :species =>"Bos taurus"}]

a.uniq { |h| h[:species] }
# => [{:id=>1, :species=>"Homo sapiens"},
# {:id=>2, :species=>"Canis lupus"},
# {:id=>3, :species=>"Bos taurus"},
# {:id=>5, :species=>"Pan troglodytes"}]

关于Ruby 哈希数组;只保留包含特定键=>值对的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25023161/

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