【发布时间】:2019-05-08 11:15:50
【问题描述】:
我在我的应用程序中使用 Ruby 2.6。
我想删除哈希数组中的重复元素。这是我的意见
array_of_hashes = [
{"Date"=> "2019-05-6", "ID" => 100, "Rate" => 10, "Count" => 1},
{"Date"=> "2019-05-6", "ID" => 100, "Rate" => nil, "Count" => 0},
{"Date"=> "2019-05-6", "ID" => 101, "Rate" => 25, "Count" => 3},
{"Date"=> "2019-05-6", "ID" => 102, "Rate" => nil, "Count" => 0},
{"Date"=> "2019-05-6", "ID" => 102, "Rate" => 35, "Count" => 0},
{"Date"=> "2019-05-6", "ID" => 103, "Rate" => 20, "Count" => 6}
]
我正在根据我的应用程序的需要从哈希中创建键值对。
result = array_of_hashes.map { |row| [[row['ID'], row['Date'], row] }.to_h
如果哈希中有两条具有相同“ID”和“Date”值的记录,我想在“Rate”!= 0 的行中输入记录顺序可能会随机排列。这是我的实际和预期结果。
实际结果:
{[100, "2019-05-6"]=>{"Date"=>"2019-05-6", "ID"=>100, "Rate"=>nil, "Count"=>0},
[101, "2019-05-6"]=>{"Date"=>"2019-05-6", "ID"=>101, "Rate"=>25, "Count"=>3},
[102, "2019-05-6"]=>{"Date"=>"2019-05-6", "ID"=>102, "Rate"=>35, "Count"=>0},
[103, "2019-05-6"]=>{"Date"=>"2019-05-6", "ID"=>103, "Rate"=>20, "Count"=>6}}
预期结果:
{[100, "2019-05-6"]=>{"Date"=>"2019-05-6", "ID"=>100, "Rate"=>10, "Count"=>1},
[101, "2019-05-6"]=>{"Date"=>"2019-05-6", "ID"=>101, "Rate"=>25, "Count"=>3},
[102, "2019-05-6"]=>{"Date"=>"2019-05-6", "ID"=>102, "Rate"=>35, "Count"=>0},
[103, "2019-05-6"]=>{"Date"=>"2019-05-6", "ID"=>103, "Rate"=>20, "Count"=>6}}
我怎样才能得到上述预期的结果?
【问题讨论】:
-
1. “预期结果”是否可以包含
Rate = nil的值(哈希)? 2.array_of_hashes是否可以包含两个元素,它们的"ID"和"Date"具有相同的值,而"Rate"都没有nil值?如果“是”,应该选择哪个?