2013-09-27 21 views
0

我想存儲與密鑰關聯的數據三元組。我有這種形式的三元組:在Ruby中以排序方式累積數據

"data1" "data2" "data3" 

其中data1是一個整數。我有一個三元組鍵的機制。例如"key1"映射到

["data1", "data2", "data3"] 

可以有多個與密鑰關聯的三元組。例如,[4, "data2", "data3"], [1, "data5", "data6"] and [3, "data8", "data9"]可映射到"key1"。我希望這些三元組按"data1"字段排序並映射。在這種情況下,

"key1" => {[1, "data5", "data6"] [3, "data8", "data9"] [4, "data2", "data3"]} 

我該如何做這個Ruby?

+0

這不是有效的語法 - 「」key1「=> [1」data5「」data6「] [3」data8「」data9「] [4」data2「」data3「]'。先給適當的firmat! –

回答

0

您可以如下操作:

hsh = {"key1" => [[4,"data2","data3"], [1, "data5","data6"],[3, "data8","data9"]] } 
hsh.each{|k,v| hsh[k]=v.sort_by(&:first)} 
p hsh 
# >> {"key1"=>[[1, "data5", "data6"], [3, "data8", "data9"], [4, "data2", "data3"]]} 

如果你不想更新源散列,然後使用#dup

hsh = {"key1" => [[4,"data2","data3"], [1, "data5","data6"],[3, "data8","data9"]] } 
hsh1 = hsh.dup 
hsh1.each{|k,v| hsh1[k]=v.sort_by(&:first)} 
p hsh1 
# >> {"key1"=>[[1, "data5", "data6"], [3, "data8", "data9"], [4, "data2", "data3"]]}