如何使用重复键对哈希进行排序?

时间:2014-08-24 20:33:32

标签: ruby sorting hash

我有一个哈希

h = {} h.compare_by_identity h[2.51] = 1 h1[2.51] = 2

修改:h1[2.51] = 2应为h[2.51] = 2

没有重复的密钥。但是当我使用

Hash[h.sort]

它只返回一个像

这样的键的值
{2.51=>2}

有没有办法按排序顺序从散列中获取两个值?

2 个答案:

答案 0 :(得分:2)

从ruby 2.0版开始,密钥2.51实际上是两个赋值中的同一个对象(因为ruby内部缓存)。尝试为两种情况输出2.51.object_id,它将输出相同的ID。

答案 1 :(得分:1)

由于无法使用浮点数,因此将它们转换为字符串:

h = {}
h.compare_by_identity
h[2.51.to_s] = 2
h[2.51.to_s] = 1
p h.sort # => [["2.51", 1], ["2.51", 2]]