gpt4 book ai didi

如果 Ruby 2.5 包含只有一个键/值对的散列,则删除 Ruby 键的有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 17:28:57 25 4
gpt4 key购买 nike

假设数据结构如下所示:

foo = {
'first': {
'bar': 'foo'
},
'second': {
'bar': 'foobar',
'foo': 'barfoo'
},
'third': {
'test': 'example'
}
}

我想从散列 foo 中删除所有包含只有一个键/值对的条目的键。在这种特殊情况下,操作完成后,foo 应该只剩下:

foo = {
'second': {
'bar': 'foobar',
'foo': 'barfoo'
}
}

因为 foo['first']foo['third'] 只包含一个键/值对。

最佳答案

选项 1 - delete_if

foo.delete_if { |_, inner| inner.one? }
  • delete_if 具有破坏性,因此它会改变原始哈希
  • 这将使空哈希通过

选项 2 - 拒绝

这不再变异了:

foo = foo.reject { |_, inner| inner.one? }
  • 这将使空哈希通过

选项 3 - 选择

无突变加上不同的运算符:

foo = foo.select { |_, inner| inner.size > 1 }

选项 4 - 很多? - 仅限 Rails

foo = foo.select { |_, inner| inner.many? }
  • 如果您使用的是 Rails,它会为您定义 #many?,这是包含超过 1 个项目的任何数组

其他说明

  • _ 用于未使用的变量,因为这是一种显示“这是不相关的”的方式
  • 将变量命名为 inner - 确信有更好的名称,但 value 可能会造成混淆

关于如果 Ruby 2.5 包含只有一个键/值对的散列,则删除 Ruby 键的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53837488/

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