我有一个哈希
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}
有没有办法按排序顺序从散列中获取两个值?
答案 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]]