Ruby如何迭代一个集合并创建一个哈希键(如果不存在),或者添加到值(如果键确实存在)

ruby_newbie

我发现自己经常使用这种模式,我想知道内置库中是否有某些东西可以在不添加所有这些控制流语句的情况下执行此操作。我所拥有的是:

input = <<TEXT
/us/programming/sports:model.channel.tnt.name
/us/programming/sports:model.channel.spice.name
/us/programming/sports:model.classificationwebgenre.us-entertainment.programming_link_text
/international-sports/package:model.language.international-sports.name
/brazilian/programming/sports:model.package.hbo-extra.description
TEXT


def self.create_hash(text)
  output = {}
  text.each_line("\n") do |line|
    split_lines = line.split(":")
    if output.has_key?(split_lines.first)
      output[split_lines.first] << split_lines[1][0..-2]
    else
      output[split_lines.first] = [split_lines[1][0..-2]]
    end
  end
  output
end

结尾

也是这样的输出:

{
      "/us/programming/sports" => ["model.channel.tnt.name", "model.channel.spice.name", "model.classificationwebgenre.us-entertainment.programming_link_text"],
      "/international-sports/package" => ["model.language.international-sports.name"],
      "/brazilian/programming/sports" => ["model.package.hbo-extra.description"]
    }

我只是在用这种方式使事情变得过于复杂吗?有没有惯用的方法用红宝石来写这个?提前致谢。

莱兹

不确定是否更快,但是更干净

def self.create_hash(text)
  output = {}
  text.each_line("\n") do |line|
    split_lines = line.split(":")
    output[split_lines.first] ||= []
    output[split_lines.first] << split_lines[1][0..-2]
  end
  output
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Scala:调用一个函数来检查值是否存在,如果不存在,则创建并添加到列表一次

Python 将一个数据帧中多列的值添加到另一个数据帧(如果不存在)

如果不存在则断言一个值

如果指定的文件不存在,RandomAccessFile 是否会创建一个新文件?如果文件确实存在,它是否会用新文件替换该文件?

创建一个.txt文件(如果不存在),并添加新行

在drools中,如何在ArrayList中搜索一个对象,如果不存在则添加

如何从数组中删除一个值(如果存在)或如何将其推送到数组(如果不存在)?

如果不存在,如何创建一个新文件并写入它?

Mongodb:如果不存在,如何在数组中创建一个条目

如何迭代同一个键的 2 个哈希图并将键和两个值添加到对象

MYSQL如果存在则返回一个值,如果不存在则返回另一个

一个衬垫,用于在关联数组中动态创建键,或者,如果存在,将值推送到现有键的数组

使用 Google 表格,如何创建一个查询,如果值不存在,将输出“0”?

将两个集合加在一起,如果存在则合并,如果不存在则添加

jQuery-如果一个键/值存在于另一个JSON文件中,则将其添加到一个JSON文件

如果元素不存在,则将元素添加到数组中,如果元素已存在于数组中,则在元素中增加一个值

Google脚本:如果另一个工作表中确实存在值,则复制行

如果键存在,则将值添加到哈希

从数组中删除一个值(如果存在)或不存在将其推送到数组

如何在python中实现:检查顶点是否存在,如果不存在,则创建一个新顶点

如何检查目录是否存在,如果在Rust中不存在,则创建一个新目录?

Django多对一创建父项(“一个”)(如果尚不存在)

如何检查字典中是否存在键值对?如果一个键的值是字典

如何正确地将一个值添加到 Vue 商店并删除它(如果它已经存在)?

如果页面中不存在DOM元素,如何移动到下一个迭代?

如果该值尚不存在,请向其复选框中添加一个值

创建一个具有多个不存在的键的对象

SQL选择-插入值(如果不存在)按另一个值分组

选择一个特定值,如果不存在,则选择最小值