Ruby 在匹配的键结束后从散列中删除元素

Ruby 在匹配的键结束后从散列中删除元素,ruby,hash,Ruby,Hash,我有一份杂烩 graph_data = {"12 am"=>0, "1 am"=>0, "2 am"=>0, "3 am"=>0, "4 am"=>0, "5 am"=>0, "6 am"=>0, "7 am"=>0, "8 am"=>0, "9 am"=>0, "10 am"=>0, "11 am"=>0, "12 pm"=>0, "1 pm"=>0, "2 pm"=>0, "3 pm"=>0, "

我有一份杂烩

graph_data = {"12 am"=>0, "1 am"=>0, "2 am"=>0, "3 am"=>0, "4 am"=>0, "5 am"=>0, "6 am"=>0, "7 am"=>0, "8 am"=>0, "9 am"=>0, "10 am"=>0, "11 am"=>0, "12 pm"=>0, "1 pm"=>0, "2 pm"=>0, "3 pm"=>0, "4 pm"=>0, "5 pm"=>0, "6 pm"=>0, "7 pm"=>0, "8 pm"=>0, "9 pm"=>0, "10 pm"=>0, "11 pm"=>0}
我想删除下午3点之后出现的graph_数据中的所有元素。我正在寻找的输出是:

group_data = {"12 am"=>0, "1 am"=>0, "2 am"=>0, "3 am"=>0, "4 am"=>0, "5 am"=>0, "6 am"=>0, "7 am"=>0, "8 am"=>0, "9 am"=>0, "10 am"=>0, "11 am"=>0, "12 pm"=>0, "1 pm"=>0, "2 pm"=>0, "3 pm"=>0"}
任何帮助都将不胜感激

graph_data.slice_after{|k, _| k == "3 pm"}.first.to_h
# => {"12 am"=>0, "1 am"=>0, "2 am"=>0, "3 am"=>0, "4 am"=>0, "5 am"=>0, "6 am"=>0, "7 am"=>0, "8 am"=>0, "9 am"=>0, "10 am"=>0, "11 am"=>0, "12 pm"=>0, "1 pm"=>0, "2 pm"=>0, "3 pm"=>0}


你也可以这样试试

你的价值

graph_data = {"12 am"=>0, "1 am"=>0, "2 am"=>0, "3 am"=>0, "4 am"=>0, "5 am"=>0, "6 am"=>0, "7 am"=>0, "8 am"=>0, "9 am"=>0, "10 am"=>0, "11 am"=>0, "12 pm"=>0, "1 pm"=>0, "2 pm"=>0, "3 pm"=>0, "4 pm"=>0, "5 pm"=>0, "6 pm"=>0, "7 pm"=>0, "8 pm"=>0, "9 pm"=>0, "10 pm"=>0, "11 pm"=>0}
现在


这真的是json,还是仅仅是Ruby哈希?@sawa:是的,这是Ruby哈希谢谢..让我编辑这个问题谢谢它有帮助:PDOOS排序哈希键有意义吗?谢谢它也有帮助。感谢兄弟,但最好的答案是@sawa给定一个使用slice_afterYup的,我完全同意你的意见,但在Ruby 2.1.2中不起作用@Rajarshi Das:2.1.2应与to_h合作
graph_data = {"12 am"=>0, "1 am"=>0, "2 am"=>0, "3 am"=>0, "4 am"=>0, "5 am"=>0, "6 am"=>0, "7 am"=>0, "8 am"=>0, "9 am"=>0, "10 am"=>0, "11 am"=>0, "12 pm"=>0, "1 pm"=>0, "2 pm"=>0, "3 pm"=>0, "4 pm"=>0, "5 pm"=>0, "6 pm"=>0, "7 pm"=>0, "8 pm"=>0, "9 pm"=>0, "10 pm"=>0, "11 pm"=>0}
ar = graph_data.to_a
ar.reject{|j| ar.index(j) > ar.find_index(["3 pm", 0])}.to_h
=> {"12 am"=>0, "1 am"=>0, "2 am"=>0, "3 am"=>0, "4 am"=>0, "5 am"=>0, "6 am"=>0, "7 am"=>0, "8 am"=>0, "9 am"=>0, "10 am"=>0, "11 am"=>0, "12 pm"=>0, "1 pm"=>0, "2 pm"=>0, "3 pm" => 0}