【问题标题】:Ruby - how to effectively fetch data from hash according to a valueRuby - 如何根据值有效地从哈希中获取数据
【发布时间】:2013-03-20 00:35:56
【问题描述】:

我有这样的哈希(SOURCE.inspect 的输出):

[{:id=>"1", :day=>"Monday", :message=>"... text ..."}, {:id=>"2", :day=>"Friday", :name=>"... message ..."}, ...]

我需要获取 day == Monday 的所有“项目”,但该怎么做呢? 我试过了

SOURCE.select{|key, hash| hash[:day] == "Monday" }

但这是错误的......另外,文件很大(将近 1MB 的文本),在这个哈希中搜索的最佳方法是什么?

谢谢

【问题讨论】:

  • 我认为除了您当前使用的方法之外没有其他方法。
  • 还是要检查每个项目?
  • 根据哈希中可能的值,您可以使用SOURCE.select {|h| h.has_value? "Monday" }。我不把它作为答案的原因是因为它会在Hash 的任何地方提取包含“星期一”作为值的任何哈希。

标签: ruby search hash key-value


【解决方案1】:
SOURCE.select {|x| x[:day] == "Monday" }

【讨论】:

  • 嗯...我正在尝试这个,但仍然只有一个空数组。
  • 我根据您的示例对其进行了测试,并且可以正常工作。你能检查一下你的SOURCE吗?
【解决方案2】:

select 在数组上为您提供一个元素——在您的情况下,是一个哈希。所以你可以这样做:

SOURCE.select { |hash| hash[:day] == "Monday" }

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 2013-03-05
    相关资源
    最近更新 更多