我被朋友給了一個編碼挑戰,我一直在努力執行它。我應該採取一個數組,並操縱數據,並構建一個自定義哈希到他的規格。使用Ruby將「主列表」樣式嵌套數組轉換爲嵌套哈希
開始數據
[
['first_name', 'last_name', 'phone_number', 'level_of_caringness'],
['Phteven', 'Cartwright', 911, 'None'],
['Carol', 'Smellsbad', 666, 'Hateful'],
['Bambam', 'Idontwanttomaketheseanymore', 134, 'QWERQWER']
]
最終目標
{911: { first_name: "Phteven", last_name: 'Cartwright', phone_number: 911, level_of_caringness: 'None'},
666: {first_name: "Carol", last_name: 'Smellsbad', phone_number: 666, level_of_caringness: 'Hateful'}
134: {first_name: "Bambam", last_name: 'Idontwanttomaketheseanymore', phone_number: 134, level_of_caringness: 'QWERQWER'}
}
def array_to_hash3(array)
keys = array.shift
array.each_with_object({}) {|v, h| h[[array][2]] = {keys[0] => v[0], keys[1] => v[1], keys[2] => v[2], keys[3] => v[3]}}
端
這讓我:
{nil=>{"first_name"=>"Bambam", "last_name"=>"Idontwanttomaketheseanymore", "phone_number"=>134, "level_of_caringness"=>"QWERQWER"}}
所以我在園球,但也不能令人信服。
感謝您的輸入!
編輯
我能得到很多與此
def array_to_hash3(array)
key = array.shift
array.each_with_object({}) {|v, h| h[v[2]] = {key[0] => v[0], key[1] => v[1], key[2] => v[2], key[3] => v[3]}}
end
結果
所以有一件事我留下的,是更接近原始請求想要將電話號碼用作符號而不是fixnum /整數鍵。那裏有任何想法?
編輯
終於得到它
def array_to_hash4(array)
key = array.shift
array.each_with_object({}) do |record, h|
h[record[2]] = Hash[key.zip(record)]
end
end
{
911=>{"first_name"=>"Phteven",
"last_name"=>"Cartwright",
"phone_number"=>911,
"level_of_caringness"=>"None"},
666=>{"first_name"=>"Carol",
"last_name"=>"Smellsbad",
"phone_number"=>666,
"level_of_caringness"=>"Hateful"},
134=>{"first_name"=>"Bambam",
"last_name"=>"Idontwanttomaketheseanymore",
"phone_number"=>134,
"level_of_caringness"=>"QWERQWER"}
}
@CarySwoveland謝謝。我根據你的意見改變了解決方案。 – davidrac