我有一个哈希
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}
我想删除graph_data
键后面显示的"3 pm"
中的所有元素。我正在寻找的输出是:
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"}
任何帮助都将不胜感激。
答案 0 :(得分:1)
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}
或
h = graph_data.dup
h.each_key.inject(false) do
|flag, k|
h.delete(k) if flag
flag = true if k == "3 pm"
flag
end
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}
答案 1 :(得分:1)
您也可以尝试这种方式
你的价值
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}