tôi đang làm việc với một hash gọi my_hash:Mapping để Keys của một Hash
{"2011-02-01 00:00:00+00"=>816, "2011-01-01 00:00:00+00"=>58, "2011-03-01 00:00:00+00"=>241}
Trước tiên, tôi cố gắng phân tích tất cả các phím, trong my_hash (mà lần).
my_hash.keys.sort.each do |key|
parsed_keys << Date.parse(key).to_s
end
nào mang lại cho tôi điều này:
["2011-01-01", "2011-02-01", "2011-03-01"]
Sau đó, tôi cố gắng để ánh xạ parsed_keys lại cho các phím của my_hash:
Hash[my_hash.map {|k,v| [parsed_keys[k], v]}]
Nhưng đó trả về lỗi sau :
TypeError: can't convert String into Integer
Làm cách nào để tôi có thể ánh xạ parsed_keys quay lại các phím của my_hash?
Mục đích của tôi là loại bỏ "00: 00: 00 + 00" ở cuối tất cả các phím.
Vấn đề là 'parsed_keys' là một mảng, và' parsed_keys [k] 'là chỉ mục trong một mảng, vì vậy Ruby mong bạn sử dụng một chỉ mục, không phải là một String. Nếu bạn thực sự muốn giữ mã của bạn giống nhau, hãy làm cho 'parsed_keys' một hash cũng được thiết lập như sau:' parsed_keys [key] = Date.parse (khóa) .to_s'. – MrDanA
Hãy để tôi thử điều này. Cám ơn rất nhiều ! – Myxtic