gpt4 book ai didi

ruby-on-rails - Ruby 如何迭代一个集合并在不存在的情况下创建一个散列键,或者如果键存在则添加到该值

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

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

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"]
}

我写这篇文章的方式是否只是让事情变得过于复杂?有没有一种惯用的方法可以用 ruby 写这个?提前致谢。

最佳答案

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

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

关于ruby-on-rails - Ruby 如何迭代一个集合并在不存在的情况下创建一个散列键,或者如果键存在则添加到该值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30654069/

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