【问题标题】:Accumulating data in sorted manner in Ruby [closed]在Ruby中以排序方式累积数据[关闭]
【发布时间】:2013-10-03 15:26:47
【问题描述】:

我想存储与键关联的三元组数据。我有这种形式的三元组:

"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?

【问题讨论】:

  • 这是无效的语法 - "key1" => [1 "data5" "data6"] [3 "data8" "data9"] [4 "data2" "data3"]。首先给出正确的固件!

标签: ruby oop hash


【解决方案1】:

你可以这样做:

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"]]}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多