0
내가 가지고있는 다음과 같은 두 가지 해시 :루비 정렬 해시
db = {"1" => "first_name", "2" => "last_name", "5" => "status", "10" => "city" }
csv = {"1" => "first_name", "2" => "last_name", "5" => "status", "7" => "address", "10" => "city" }
내가 DB를 기반으로 CSV를 주문하려면, 및 CSV의 모든 키가 아닌 경우 DB에, 나는 이동할 CSV의 끝에 그들을, 그 결과는 다음과 같을 것입니다 위의 예 있도록 :
{"1" => "first_name", "2" => "last_name", "5" => "status", "10" => "city", "7" => "address" }
을 키 "7"DB 해시, 우리는 단지 CSV 해시의 말미에 이동되지 않은 때문에 .
이것은 내가 뭘하려 :
db = {"1" => "first_name", "2" => "last_name", "5" => "status", "10" => "city" }
csv = {"1" => "first_name", "2" => "last_name", "5" => "status", "7" => "address", "10" => "city" }
rejects = csv.reject {|k| db.include? k }
result = csv.keep_if {|k,_| db.include? k }
result.merge!(rejects)
result
=> {"1"=>"first_name", "2"=>"last_name", "5"=>"status", "10"=>"city", "7"=>"address"}
작동하는 것 같다. 하지만 일할 것을 보장합니까? 합병은 항상 두 번째 해시를 끝내겠습니다, 아니면 합병이 해시를 고려하지 않고 해시를 함께 섞을 수있는 가능성이 있습니까?
당신은 db''에 존재하는 csv''에서 키를 재 배열 할 필요가 없습니다? – sawa
@sawa csv에없는 db에있는 키는 csv 끝에 추가해야합니다. db의 키 순서는 중요하지 않지만 모두 csv 해시 끝에 있어야합니다. – Donato
"csv에없는 db에있는 키"에 대해 묻지 않습니다. "CSV에있는 db에있는 키"에 대해 묻고 있습니다. – sawa