ruby - 格式化数据哈希的最有效方法?

标签 ruby hash formatting

我正在使用这个哈希数组将批量插入到 mongo DB 中。每个散列都是通过解析文本文件来填充的,因此字段的格式是不可预测的格式。它可能看起来像:

{date => "March 5", time => "05:22:21", first_name = "John", middle_initial = "JJ", ...}

我会有一系列格式化函数。所以也许:

def format_date
..convert if needed..
end

def format_time
...
end

我将如何调用各种记录的格式化函数?我可以看到进行某种 lambda 调用,在其中迭代哈希并调用 format_record_name 函数,但并非所有记录都具有格式化函数。例如上面的first_name记录就不需要一个。有什么想法吗?

最佳答案

只需保留您想要处理的键的列表即可。您甚至可以使用哈希将其与转换函数联系起来:

transformations = { 
  :date => lambda {|date| whatever},
  :time => lambda {|time| whatever} 
}
transformations.default = lambda {|v| v}

data.map do |hash|
  Hash[ hash.map {|key, val| transformations[key][val] } ]
end

关于ruby - 格式化数据哈希的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5466005/

相关文章:

c - Ruby 的专有 C 扩展

ruby-on-rails - 如何检查我的数组是否包含对象?

ruby - 如何在不覆盖默认选项的情况下传递选项散列?

wcf - 通过 WCF 服务的 JSON 输出中的 URL 格式不正确

r - 使用 R markdown 中的 flextable R 包并排对齐多个表格

javascript - 删除 Chrome 扩展程序生成的内容的格式

ruby - 在开发过程中运行 RubyGem CLI

ruby - 在 Windows 上运行时无法退出 Guard

c++ - 如何找到STL hash_map的表大小和内存消耗?

java - 单词词典的哈希效率加倍